Ver la Versión Completa : problema al convertir valor en edit de forma str a float
jirbert
03-10-2008, 06:29:16
buenas noches como siempre lo hago antes de abrir un hilo nuevo busco primero a ver si consigo problemas relacionados con el mio, pero por ser internet se encuentra un gran cantidad de problemas paracidos pero de los que lei ninguno concuerda con el mio, por otra parte como me urge un pronta respuesta decidi abrir un hilo
aqui les dejo mi problema y espero me puedan ayudar gracias de antemano..
tengo un programa de facturacion, el cual al agregar o eliminar un producto me hace la siguiente funcion:
Var
Precio : Currency;
iva,total,total2:double;
n1,n2,nt:double;
begin
precio := 0;
form1.Table4.DisableControls;
try
form1.Table4.First;
While Not form1.Table4.Eof do
begin
Precio := Precio + form1.Table4.FieldbyName('Total').ASCurrency;
form1.Table4.Next;
end;
edit4.Text := CurrToStr(Precio);
finally
form1.Table4.EnableControls;
end;
begin
total:=strtofloat(edit4.text);
iva:=total*0.09;
edit5.Text:=format('%f',[iva]);
n1:=strtofloat(edit4.text);
n2:=strtofloat(Edit5.text);
nt:=n1+n2;
edit6.Text:=floattostr(nt);
end;
esto va calculado en tres tedit
edit1 subtotal este campo viene expresado en entero ya que todos lo productos que se ingresan son enteros
edit2 iva este flotante po lo de *0.09
edit3 total y este a su vez deveria ser flotante porque es la suma de edit1+edit2 pero no.
ejemplo:
asi deberia ser:
edit1 subtotal 13245
edit2 iva 1192,05
edit3 total 14437,05
asi lo hace:
edit1 subtotal 13245
edit2 iva 1192,05
edit3 total 14437,0
y como por otra parte tengo trabando el Atexto para convertir el monto en letras para la factura me da como resultado:
catorse mil cuatrocientos treinta y siete con cero cinco centimos
entonces no entiendo otra cosa que me interesaria es hacer que de este formato:
edit1 subtotal 13245
edit2 iva 1192,05
edit3 total 14437,05
se viera asi:
edit1 subtotal 1.3245
edit2 iva 1.192,05
edit3 total 14.437,05
con la separacion de decimales y de miles!!
gracias por la ayuda que puedas brindarme!!!!:)
La verdad es que eso de sumar lo podías hacer con un query:
query1.sql.text := 'select SUM(total) from tabla where idfactura = ' + inttostr(numeroFactura
query1.Open;
suma_total := query1.fields[0].AsCurrency;
En lugar de floattostr, usa FormatFloat(',#0.00', suma_total)
Saludos
jirbert
03-10-2008, 13:18:22
hola lepe gracias por la sugerencia, pero estoy empezando a creer que son problemas matematicos
porque en este ejemplo
edit1 subtotal 59595
edit2 iva 5363,55
edit3 total 64958,55
me puse a sacar cuentas en calculadoras y al igual que mi programa omite en cero de la derecha del decimal. con respecto a lo de la separacion de decimales y miles. no me funciona yo estuve probando
edit6.text:=format('#.###,##', (edit6.text))
pero no me funciona ni la que me proporcionaste.. de todas formas gracias por la ayuda
Luis M.
03-10-2008, 14:39:56
Prueba esto:
edit6.text:=format('#,##0.00', (edit6.text))
ContraVeneno
03-10-2008, 15:03:11
¿por que en lugar de utilizar TEdits para manejar valores monetarios no utilizas el TJVValidateEdit de las Jedi?, son gratis y muy muy recomendables.
Además de que te evitas la pena de andar haciendo conversiones de Str a Curr o viceversa:
UnValidateEdit.AsCurrency := FieldByName('unCampo').AsCurrency; // AsCurrency, AsINteger, AsFloat, AsString... como quieras.
UnValidateEdit.AsCurrency := OtroValidate.AsCurrency + 100;
Y para los formatos, simplemente editar una o dos propiedades y te olvidas del formato...
egostar
03-10-2008, 15:45:42
hola lepe gracias por la sugerencia, pero estoy empezando a creer que son problemas matematicos
porque en este ejemplo
edit1 subtotal 59595
edit2 iva 5363,55
edit3 total 64958,55
me puse a sacar cuentas en calculadoras y al igual que mi programa omite en cero de la derecha del decimal. con respecto a lo de la separacion de decimales y miles. no me funciona yo estuve probando
edit6.text:=format('#.###,##', (edit6.text))
pero no me funciona ni la que me proporcionaste.. de todas formas gracias por la ayuda
Hola
Yo sugiero que se use esto:
edit1.Text := Format('%m',[subtotal]);
edit2.Text := Format('%m',[IVA]);
edit3.Text := Format('%m',[subtotal+IVA]);
Salud OS
jirbert
03-10-2008, 16:37:20
hola egostar gracias por el suministro, pero al igual que el de lepe no me da respuesta diferente sigue siendo la misma, ContraVeneno de casualidad tienes algun link para descargar eso de las jevi porque estuve googleando y no consegui nada!!
Busca por JVCL seguro que vas derechito a la web ;)
Si no te funciona, ojito que en mi ejemplo suma_total está declarado como un float, si es un string desde luego que no funciona.
saludos
ContraVeneno
03-10-2008, 16:53:17
changos... hace un mes que salió la 3.35 y yo sigo con la 3.34... a caray... la 35 está en pruebas todavía... que bien, entonces seguimos con la 3.34
http://sourceforge.net/project/showfiles.php?group_id=45786&package_id=42327&release_id=616736
jirbert
03-10-2008, 16:55:05
funcionan con cualquier delphi verdad yo tengo delphi6, gracias por el link
ContraVeneno
03-10-2008, 17:03:14
pues yo los tengo instalados en un Delphi 5, en un 2006 y en un 2007... así que supongo que sí funcionan en delphi 6 :D
egostar
03-10-2008, 18:04:42
hola egostar gracias por el suministro, pero al igual que el de lepe no me da respuesta diferente sigue siendo la misma, ContraVeneno de casualidad tienes algun link para descargar eso de las jevi porque estuve googleando y no consegui nada!!
Hola,
No te entiendo, esto es lo que me muestra a mi.
http://egostar.clubdelphi.com/varios/Format.PNG
Esto es como hago los calculos
subtotal := 13245;
iva := SubTotal * 0.09;
edit1.Text := Format('%m',[SubTotal]);
edit2.Text := Format('%m',[IVA]);
edit3.Text := Format('%m',[SubTotal+IVA]);
Salud OS
jirbert
03-10-2008, 18:33:11
Hola,
No te entiendo, esto es lo que me muestra a mi.
http://egostar.clubdelphi.com/varios/Format.PNG
Esto es como hago los calculos
Código Delphi [-] (http://www.clubdelphi.com/foros/#)
subtotal := 13245;
iva := SubTotal * 0.09;
edit1.Text := Format('%m',[SubTotal]);
edit2.Text := Format('%m',[IVA]);
edit3.Text := Format('%m',[SubTotal+IVA]);
Salud OS
bueno egostar es si lo hace a segun como deberia ser per opor ejemplo cuando es 13254,50 aprece 13254,5 y a la hora del Atexto aparece 50, por lo que el contador me esta sugiriendo que lo acomode de tal modo que aparezca tal cual como en el texto con sus dos decimales, ya que esas son las normas que piden.
jirbert
03-10-2008, 18:50:45
saben algo me puse a verificar la base de datos y todos las facturas antes realizadas estan guardadas perfectamente, ahora no se porque a la hora de reflejarlo en el edit me elimina el cero del segundo decimal, y al imprimirlo sale igual que lo reflejado en el edit pero segun todos los registros en la bd estan perfectamente.:eek:
Delphius
03-10-2008, 18:58:59
¿Podrías mostrarnos un poco de código? Tal vez de esa manera podríamos saber donde está el problema.
La verdad es que podríamos estar adivinando donde está el problema, sería muy recomendable que expongas el código para saber como y que estás haciendo... tal vez hay algo en el medio que afecta.
Saludos,
egostar
03-10-2008, 19:00:00
saben algo me puse a verificar la base de datos y todos las facturas antes realizadas estan guardadas perfectamente, ahora no se porque a la hora de reflejarlo en el edit me elimina el cero del segundo decimal, y al imprimirlo sale igual que lo reflejado en el edit pero segun todos los registros en la bd estan perfectamente.:eek:
Dejame entender, como es que quieres que se traduzca 13254,5
Trece mil doscientos cincuenta y cuatro pesos 50/100 MN
Trece mil doscientos cincuenta y cuatro pesos con 50 centavos
Trece mil doscientos cincuenta y cuatro pesos con cincuenta centavos
Porque acabo de probar el componente y a mi me muestra esto
trece mil doscientos cincuenta y cuatro pesos con cincuenta centavos
Uso esto
Letras1.Numero := 13254.5;
Letras1.Moneda := 'pesos';
Letras1.Centavos := 'centavos';
ShowMessage(Letras1.AsString);
Usando este valor
Letras1.Numero := 13254.05;
Letras1.Moneda := 'pesos';
Letras1.Centavos := 'centavos';
ShowMessage(Letras1.AsString);
Me muestra
trece mil doscientos cincuenta y cuatro pesos con cinco centavos
Salud OS
jirbert
03-10-2008, 19:09:57
hola delphius mira tengo esto en el boton de entrada de cada producto
Var
Precio : Currency;
iva,total:double;
n1,n2,nt:double;
begin
form1.Table4.Append;
form1.Table4.Fields[0].Value:=edit2.Text; // bd datos temporal de productos a facturar
form1.Table4.Fields[1].Value:=edit9.Text;// bd datos temporal de productos a facturar
form1.Table4.Fields[2].Value:=edit7.text; // bd datos temporal de productos a facturar
form1.Table4.Fields[4].Value:=edit8.Text;// bd datos temporal de productos a facturar
form1.Table4.Fields[5].Value:=edit4.Text; // bd datos temporal de productos a facturar
form1.Table4.Fields[3].Value:=edit5.Text; // bd datos temporal de productos a facturar
form1.Table4.Fields[6].Value:=edit6.Text; // bd datos temporal de productos a facturar
form1.Table4.Post; // bd datos temporal de productos a facturar
panel1.Visible:=false;
precio := 0;
form1.Table4.DisableControls;
try
form1.Table4.First;
While Not form1.Table4.Eof do
begin
Precio := Precio + form1.Table4.FieldbyName('Total').ASCurrency;
form1.Table4.Next;
end;
edit4.Text := CurrToStr(Precio);
finally
form1.Table4.EnableControls;
end;
begin
total:=strtofloat(edit4.text); // esto es el subtotal
iva:=total*0.09;
edit5.Text:=format('%f',[iva]); //aqui el iva
n1:=strtofloat(edit4.text);
n2:=strtofloat(Edit5.text);
nt:=n1+n2;
edit6.text:=floattostr(nt); // aqui la suma de ambos
end;
end;
egostar yo utilizo este:
Trece mil doscientos cincuenta y cuatro pesos con cincuenta centavos
Delphius
03-10-2008, 19:22:37
No veo el problema, al menos con una visión rápida, pero lo que si noto que hay muchos pasos de float a string y a la inversa.... ¿Porqué en vez de estar haciendo estas conversiones (a mi modo de ver innecesarias) no guardas los datos en variables temporales y muestras el resultado final en los edits?
Quizá el lio está en esas conversiones de float a string y a la inversa, de string a float.
Saludos,
egostar
03-10-2008, 20:35:33
Hola
No entiendo para que usas esos tipos de datos, yo usaria esto, :rolleyes:
Var
Precio,iva,total : Real;
begin
Precio := 0;
form1.Table4.First;
while Not form1.Table4.Eof do begin
Precio := Precio + form1.Table4.FieldbyName('Total').Value;
form1.Table4.Next;
end;
edit4.Text := format('%m',[Precio]);
iva:= Precio * 0.09;
edit5.Text := format('%m',[iva]);
edit6.Text := format('%m',[Precio+iva]);
Letras1.Numero := Precio+iva;
Letras1.Moneda := 'pesos';
Letras1.Centavos := 'centavos';
ShowMessage(Letras1.AsString);
end;
Salud OS
jirbert
03-10-2008, 20:56:09
bueno prove el cod de egostar y me realiza lo mismo :(
file:///C:/DOCUME%7E1/ADMINI%7E1/CONFIG%7E1/Temp/moz-screenshot-2.jpg
Delphius
03-10-2008, 21:00:57
bueno prove el cod de egostar y me realiza lo mismo :(
file:///C:/DOCUME%7E1/ADMINI%7E1/CONFIG%7E1/Temp/moz-screenshot-2.jpg
jirbert, si deseas poner una imagen debes subirla a un sitio que ofrezca el "alojamiento" de imagenes. Por ejemplo ImageShack (http://my.imageshack.us/). Te creas una cuenta y alli puedes subir tus imagenes y luego mostrarlas aqui.
Saludos,
ContraVeneno
03-10-2008, 21:48:46
bueno prove el cod de egostar y me realiza lo mismo :(
file:///C:/DOCUME%7E1/ADMINI%7E1/CONFIG%7E1/Temp/moz-screenshot-2.jpg
jejejeje, esta estuvo buena, jejeje.
Lo vuelvo a decir por si no se captó la primera vez:
Si utilizas TjvValidateEdit, no tienes que codificar nada de conversiones y no tienes que codificar nada de formatos.
jejejeje, esta estuvo buena, jejeje.
¿Por qué? No es tan descabellado, algunos foros si suben al servidor las imágenes que se añaden, incluso permite 20 megas por mensaje.
Saludos
jirbert
03-10-2008, 22:44:31
jejejeje, esta estuvo buena, jejeje.
Lo vuelvo a decir por si no se captó la primera vez:
Si utilizas TjvValidateEdit, no tienes que codificar nada de conversiones y no tienes que codificar nada de formatos.
bueno las descargue pero me da error al ejecutar el intaler de jcl me dice lo siguiente:
delphi 6 update 2 is not intalled!!
ContraVeneno
03-10-2008, 23:34:41
pues eso... te falta actualizar tu Delphi 6 con el "Update 2"
algunos foros si suben al servidor las imágenes que se añaden
Nunca me he topado con ninguno que suba las imágenes así directo. :p
egostar
03-10-2008, 23:48:02
saben algo me puse a verificar la base de datos y todos las facturas antes realizadas estan guardadas perfectamente, ahora no se porque a la hora de reflejarlo en el edit me elimina el cero del segundo decimal, y al imprimirlo sale igual que lo reflejado en el edit pero segun todos los registros en la bd estan perfectamente.:eek:
De casualidad, no le habrás puesto un limite de caracteres en el Edit :rolleyes::rolleyes::rolleyes: digo a estas alturas todo se vale :D:D:D
Salud OS
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.