Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   No se me registra el separador decimal en Acces (https://www.clubdelphi.com/foros/showthread.php?t=6529)

delphicano 12-01-2004 16:38:22

No se me registra el separador decimal en Acces
 
Hola estimados amigos:

Tengo una aplicación desarrollada en delphi, que opera con una base de datos access. Todo funciona "casi impecable", porque el problema se da cuando registro decimales en la base de datos, no se registra el punto separador de decimales. Por ejemplo registro el 10.2 y en la base de datos queda como 102 :confused: :confused: :confused: y no me tira ningún error!!

El tipo de dato es double y realmente no sé qué está pasando. El campo se llama cantidad dentro de una tabla llamada materiales. Esto es lo que hago:

with query do
begin
close;
sql.clear;
sql.add('update materiales set cantidad=cantidad+'+edit1.text+' where ...');
execsql;
end;

Obviamente hago las validaciones al edit1 para que sea un real (no usar comas, letras, no más de un punto, etc.) Es en ese edit donde pongo el valor 10.2 (u otro) y en la base de datos queda como 102 al registrarse.

De antemano agradezco la ayuda. :p

ramiretor 12-01-2004 19:59:17

Hola:
No entendí porque en la sentencia pones:

'update materiales set cantidad=cantidad....

lo que no entiendo porque cantidad = cantidad como cadena

Saludos
:D

delphicano 12-01-2004 23:56:41

Lo que hago en definitiva es sumar al valor actual que está en la BD, el valor que trae el edit.

Por ejemplo si en la BD está el valor 5.2 y le quiero sumar 10.2, el resultado que debe qeudar registrado es 5.2+10.2=15.4, pero queda como 154.

En la actualización lo que hago es, al valor actual, sumarle lo que trae el parámetro. Así como esto:

cantidad:=5.2;
cantidad:=cantidad+10.2;

Es lo mismo.

Es el único error que me falta arreglar para entregar mi trabajo, ayúdenme por favor. :( :( :(

Muchas Gracias. :(

ramiretor 13-01-2004 01:17:18

Hola:
Pues es que en la primer consulta pones el valor de cantidad como cadena es decir no lo va a reconocer como variable.
Otra solucion es que por qué no pones la consulta con parámetros?, por ejemplo en diseño pones en la propiedad SQL del query algo asi:

update materiales set cantidad=:tfCantidad
where ....

bueno lo siguiente sería que le digas al query el tipo de parámetro en la propiedad Params haciendo doble clic te listará los parámetros de la consulta. Seleccionas el correspondiente y en la propiedad DataType seleccionas ftFloat y en la propiedad ParamType seleccionas ptInput


ahora en el código haces algo asi:

with query do
begin
close;
ParamByName('tfCantidad').AsFloat := Cantidad + StrToFloat(edit1.text);
execsql;
end;


y con eso debe de funcionar

Espero que te sirva de algo

Saludos a to2
;)

ramiretor 13-01-2004 01:23:31

Bueno para seguir con la manera en la que estabas y para complementar la respuesta anterior, yo te recomendaria guardarás toda la cantidad en una variable por ejemplo CantidadTotal, algo asi:

var
CantidadTotal: Real;

begin
...
CantidadTotal := Cantidad + StrToFloat(Edit1.Text);

y con la consulta trabajas:

with query do
begin
close;
sql.clear;
sql.add('update materiales set cantidad=' + FloatToStr(CantidadTotal) +
' where ...');
execsql;
end;

y debería también de funcionar
Saludos y no desesperes
:D

Cabanyaler 13-01-2004 09:19:09

¿Porqué no miras tb en el panel de control en configuraciónb regional del pc el caracter utilizado como separador de miles y de decimales?.


La franja horaria es GMT +2. Ahora son las 09:26:12.

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