PDA

Ver la Versión Completa : Suma de dos Edit precio + IVA


Luis.Lapuente
07-09-2014, 06:19:17
Hola muy buenas noches ante todo saludo a toda esta comunidad… Bueno les cuento estoy creando un módulo de consulta el cual me muestra condigo, nombre, marca, imagen y precio sin impuesto, Hay esta mi problema quiero calcular el impuesto para que me lo muestre en un edit. Un pequeño ejemplo de cómo estoy trabajando
//En el edit código tengo esto
ADOTableImpuesto.filter:= 'CodProd = ' + QuotedStr ( Codigo.Text );
ADOTableImpuesto.Filtered:= true;
igv.Text:=ADOTableImpuesto.fieldbyname('Monto').asstring;
ADOTableProductos.filter:= 'CodProd =' + QuotedStr ( Codigo.Text );
ADOTableProductos.Filtered:= true;
SubTotal.Text:= ADOTableProductos.fieldbyname('Precio1').AsString;

//Y en el edit subtotal tengo esto y lo estoy trabajando en SUBTOTALCHANGE
var
A: Real;
B: Real;
begin
A :=strtofloat(subtotal.Text) ;
B :=strtofloat(edit1.Text);
total.text:=floattostr(a-b);

Mi problema es que me arroja un error ( “is not a valid floating point value.)
Pido por favor si me pueden ayudar soy muy novato en esto de echo sin mentir en mi primer proyecto

newtron
07-09-2014, 09:26:25
Hola.

Ahí creo que te pueden pasar dos cosas:

1º- Que alguno de los valores sea superior a 999 y tenga un punto o coma en los miles y por eso te de error, para poder pasar el número de string a float deberías de quitarle los posibles puntos o comas de puntuación de los miles.
2º- Que el signo decimal lo tengas puesto como punto en vez de coma y al intentar convertirlo te de error, el punto decimal debe de ser una coma.

Saludos

Caral
07-09-2014, 19:08:24
Hola
Windows:
Panel de control
Configuracion regional y de idioma
configuracion adicional
Cambia simbolo decimal por un punto y simbolo de separacion de miles por coma.
Aplicar
Cierra todo
reinicia windows
Listo
Saludos

ecfisa
08-09-2014, 06:37:53
Hola Luis.Lapuente, bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).


...
//En el edit código tengo esto
ADOTableImpuesto.filter:= 'CodProd = ' + QuotedStr ( Codigo.Text );
ADOTableImpuesto.Filtered:= true;
igv.Text:=ADOTableImpuesto.fieldbyname('Monto').asstring;
ADOTableProductos.filter:= 'CodProd =' + QuotedStr ( Codigo.Text );
ADOTableProductos.Filtered:= true;
SubTotal.Text:= ADOTableProductos.fieldbyname('Precio1').AsString;

//Y en el edit subtotal tengo esto y lo estoy trabajando en SUBTOTALCHANGE
var
A: Real;
B: Real;
begin
A :=strtofloat(subtotal.Text) ;
B :=strtofloat(edit1.Text);
total.text:=floattostr(a-b);

Mi problema es que me arroja un error ( “is not a valid floating point value.)
...
También revisa que la propiedad Text de edit1 contenga un número decimal válido y no caracteres inconvertibles o esté vacío al momento de producirse el evento OnChange del TEdit subtotal.

Saludos :)

Luis.Lapuente
08-09-2014, 16:41:23
Hola muchas gracias por dedicarme su preciado tiempo… revise cada uno de los punto que me dieron y aun me continua el error, pero también me percate que el error se me produce al momento que el edit subtotal está vacío. Por ejemplo si edit subtotal queda en blanco me sale el error o si edit iva (edit1) queda en blanco me sale el mismo error la cosa es que mientras busca por el edit código esos dos campo quedan en blanco… Me podrían decir que puedo hacer aquí. Por favor

ecfisa
08-09-2014, 20:08:36
Hola Luis.Lapuente.

Si alguno de los TEdit (Edit1 o subtotal) no tienen contenido, la función StrToFloat lanzará una excepción ya que la cadena vacía no es suceptible de ser convertida a número de punto flotante.

Tres opciones que evitan la situación:

A)

var
A,B: Double;
begin
try
A:= StrToFloat(Edit1.Text);
except
Edit1.SetFocus;
raise Exception.Create('Edit1 no tiene un número decimal válido');
end;

try
A:= StrToFloat(subtotal.Text);
except
subtotal.SetFocus;
raise Exception.Create('subtotal no tiene un número decimal válido');
end;


B)

var
A,B: Double;
begin
if not TryStrToFloat(Edit1.Text, A) then
begin
Edit1.SetFocus;
raise Exception.Create('Edit1 no tiene un número decimal válido');
end;

if not TryStrToFloat(subtotal.Text, B) then
begin
subtotal.SetFocus;
raise Exception.Create('subtotal no tiene un número decimal válido');
end;


C)

var
A,B: Double;
begin
A:= StrToFloatDef(Edit1.Text, 0); // A = 0 si no se puede efectuar la conversión
B:= StrToFloatDef(subtotal.Text, 0); // B = 0 si no se puede efectuar la conversión


Saludos :)

Luis.Lapuente
08-09-2014, 22:23:49
Muchas gracias amigo te agradezco mucho..... Muy bueno el foro de verdad que si agradezco a todos ustedes por su tiempo y compartir sus conocimientos con personas como yo que estamos comenzando en este mundo
^\||/