Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   sumar o restar valores tipo money (https://www.clubdelphi.com/foros/showthread.php?t=69892)

gonza_619 16-09-2010 02:48:22

sumar o restar valores tipo money
 
hola miren tengo 2 dbedits en donde estan valores tipo money de una tabla.
bien ahora los necesito sumar , como seria la funcion? o a los dbedits los paso a variables real. puede ser que strtoint(dbedit1.text) ese dbedit.text tiene un valor money, pero nuca ese valor va a ser por ej: $2,5
en este caso seran $2sin coma,
Bmuchas gracias

ecfisa 16-09-2010 04:10:01

Hola.

Te pongo dos formas para hacerlo:
Código Delphi [-]
begin
var
  r1,r2: Currency;
begin
  // Ej. 1
  r1:= Table1.FieldByName('Campo1').AsCurrency +
       Table1.FieldByname('Campo2').AsCurrency;
 // Ej. 2
  r2:= DBEdit1.DataSource.DataSet.FieldByName('Campo1').AsCurrency +
       DBEdit2.DataSource.DataSet.FieldByName('Campo2').AsCurrency;  
end;

Saludos. :)

ecfisa 16-09-2010 05:23:15

Hola.

Antes de que me den el tirón de orejas, se me deslizó un 'begin' de más.
Favor de ignorarlo... :D

Saludos. :)

gonza_619 16-09-2010 05:25:57

ok no ay drama se me ocurrio esto q al parecer funciona
Código Delphi [-]
query1.SQL.Clear;
 Query1.sql.text:= 'Select costo as cost from cursos where cod_curso =1' ;
 query1.Active:=true;
 w:= Query1.FieldByName('cost').AsCurrency;

 query1.SQL.Clear;
 Query1.sql.text:= 'Select sum(importe) as Monto from cobranzas where alucurso =1' ;
 query1.Active:=true;
 j:= Query1.FieldByName('Monto').AsCurrency;

 if jthen
 begin
showmessage('chau');
end;

ecfisa 16-09-2010 08:56:32

Hola.

Sin analizár la lógica empleada ya que no sé lo que buscas que haga el código, pareciera funcionar.
A excepción de un detalle :

Mas allá que j este pegado al then (pudo ser error de tipeo).
Sucede que si la variable j no es de tipo Boolean te va a dar error de expresión en la línea del if/then.
Y si lo és, te va a dar un error de incompatibilidad de tipos cuando le asignas el valor del campo Monto del Query.

Por otro lado me parece un código muy complicado para mostrar un mensaje despedida... :D

Saludos. :)

gonza_619 16-09-2010 12:01:39

bien ahora qisiera sber si esto es correcto
en un dbedit1.text se almacena un valor tipo money ($80) por ej, entonces lo paso a currency para valores moneda
var x:currency;
x:=strtocurr(dbedit1.text);

me da error $80 no es un valor flotant valido, y no lo paso a flotant por eso la duda, como seria entonces para q se mantenga money? grax

ecfisa 16-09-2010 12:46:51

Hola.

Yo obtendría el valor de este modo
Código Delphi [-]
var
  x: Currency;
begin
  x:= StrToCurr(DBEdit1.Field.AsString);
y luego le doy el formato que desee mostrar:
Código Delphi [-]
   ShowMessage(Format('%m',[x]));

Saludos.

gonza_619 16-09-2010 13:05:54

Bien, explico mira yo en el dbedit1.text ingreso un monto en moneda $, ya q el dbedit1.text esta realacionado a un campo tipo moneda, bien ingreso el monto que aun no esta alamcaenado en la tabla, bueno a ese monto lo quero psasr a currency para sumarlo a otro currency, he probado

var
x: Currency;
begin
x:= StrToCurr(DBEdit1.field.AsString);

pero yo no qiero pasar a currency un valor almacenado,sino un valor que ingrese en el dbedit que luego sera almacenado o no, gracias

ecfisa 16-09-2010 14:21:34

Hola gonza.

Te entiendo perfectamente.

Probá de hacer lo siguiente:
Código Delphi [-]
procedure TForm1.DBEdit1Exit(Sender: TObject);
var
  x: Currency;
begin
  x:= StrToCurr(DBEdit1.Field.AsString); 
  x:= x + 1000;
  ShowMessage(FloatToStr(x));
end;
Notarás que que si ingresaste por ejemplo: $ 1200,00 el mensaje dira: 2200, que en definitiva es la suma del valor que acabas de ingresar + 1000...
No podés trabajar con el valor Text como si fuese un string por que es un MaskedText.

Simplificando mucho, una cosa es lo que se muestra debido a la máscara($,.) y otra el manejo interno del valor numérico.

Espero me hayas entendido.

Saludos. :)


La franja horaria es GMT +2. Ahora son las 04:09:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi