Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   restar o sumar 2 dbedits.text (https://www.clubdelphi.com/foros/showthread.php?t=69841)

gonza_619 13-09-2010 16:40:48

restar o sumar 2 dbedits.text
 
hola q tal, miren quiero realizar la resta de 2 dbedits.text. en los cuales estan datos numericos de campos, en realidad datos money y guardarlo en una variable

if dbedit4.text<dbedit10.text then
a:=dbedit10.text-dbedit4.text
dbedit5:=a;

la variable la declare como string, esta bien o deberia ser float?, se puede hacer resta? o debo guardar los dbedit en variables?
grax

Caral 13-09-2010 17:50:24

Hola
No se la necesidad de la variable, pero:
Código Delphi [-]
Var a: String;
begin
if dbedit4.text < dbedit10.text then
begin
a:= FloatToStr(StrToFloat(dbedit10.text) - StrToFloat(dbedit4.text));
dbedit5.text:= a;
end;
end;

Otro directo:
Código Delphi [-]
if dbedit4.text < dbedit10.text then
begin
dbedit5.text:= FloatToStr(StrToFloat(dbedit10.text) - StrToFloat(dbedit4.text));
end;

Saludos

gonza_619 13-09-2010 18:10:22

restar o sumar 2 dbedits.text
 
hola mira, me da error de que $75,00 is not a valid float value
ese monto se asigna a un al db edit10 cuando slecciono un registro de la grilla. el campo es money, por habra sido el error?
muchas gracias

FGarcia 13-09-2010 18:12:57

Aclarando solamente que los contenidos de un edit, aun cuando sean numeros (digitos) son de tipo String, por lo cual es necesario convertirlos a un tipo numerico para poder realizar las operaciones matematicas.El resultado de la operacion matematica se debera volver a convertir para exhibirlo al usuario.

cualquier caracter que no sea numero es evaluado por la funcion como error ($, ','). Deberas eliminar esos caracteres de tus cadenas antes de convertir a un valor numerico (numerico no es lo mismo que monetario)

Caral 13-09-2010 18:18:31

Hola
Normalmente es por que la coma no la ve como decimal.
Eso se arregla desde el panel de control en configuracion regional.
Lo que me extraña es que lo presente con el signo de dolares $, si es asi, no tengo idea.
Lo unico que se me ocurre es cambiar el campo a double.
Saludos

gonza_619 13-09-2010 19:42:44

hola vi en otros foros q podia servir esto para eliminar $
Delete(Cadena,1,1);//elimina el primer caracter ascii de cadena Label1.Caption:=Cadena;
o
Label1.Caption := StringReplace(Cadena, '$', '', [rfReplaceAll]);en lugar de label iria el dbedit1.text? luego se asigna solo?
no entiendo lo de las '' es el espacio despues del $?
solo quiero sacar el $ para luego sumar o restar
luego qedaria en float? gracias

perdon lo vi en este foro

a bueno despues tengo q restar como me dijeron antes

if dbedit4.text < dbedit10.text then
begin
dbedit5.text:= FloatToStr(StrToFloat(dbedit10.text) - StrToFloat(dbedit4.text));
end;

seria asi?

Caral 13-09-2010 20:06:48

Hola
La idea es buena, solo que tienes que tener en cuenta que se trata de DBEdits, no de EDits.
Esto lo comento por que al hacer un replace lo hara en el DBEdit y podra sr un problema en la BD.
Para solucionar eso simplemente usa variables que contengan el dato, asi:
Código Delphi [-]

var a,b: string;
begin
if dbedit4.text < dbedit10.text then
begin
  a:= StringReplace(dbedit10.text, '$', '', [rfReplaceAll]);
  b:= StringReplace(dbedit4.text, '$', '', [rfReplaceAll]);
  dbedit5.textt:= FloatToStr(StrToFloat(a) - StrToFloat(b));
end;

Revisa el ejemplo.
Saludos

gonza_619 13-09-2010 20:08:43

gracias ya me salio lo hice como dijiste al ultimo, muchas gracais


La franja horaria es GMT +2. Ahora son las 12:50:42.

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