PDA

Ver la Versión Completa : SQL y coma decimal


mjjj
26-12-2008, 14:19:01
Hola amigos, una consulta...

Utilizo Delphi 2006 y Firebird 2.0
Intento almacenar un registro en una base de dato utilizando este codigo.


ibsql1.close;
ibsql1.sql.clear;
ibsql1.sql.add('insert into inventario (id, precio) values (:id, :precio)')
ibsql1.parambyname('id').asstring:='001';
ibsql1.parambyname('precio').asstring:=currencyedit1.text;
ibsql1.execquery;


La tabla iventario esta definida como sigue:
id: varchar
precio: doubleprecision

El problema surge cuando intento almacenar un registro que el precio no es un numero entero sino por ejemplo: 123,456.

Lo que ocurre es que se me almacena un registro que en el campo precio tiene un valor de 123456... es como si la coma decimal desapareciera.

Porque ocurre esto??

Como lo soluciono??

Gracias

dec
26-12-2008, 14:22:08
Hola,

Creo que en lugar de "asString" deberías usar algo como "asDouble" cuando preparas el valor del "parámetro precio". Ya digo que no estoy seguro, pero, pareciera que la coma se pierde al convertir el valor a "string", y por eso lo digo. :rolleyes:

marcoszorrilla
26-12-2008, 15:10:15
El problema viene porque en SQL, los decimales los marca el punto y no la coma.

Tendrás que convertirlo a texto, y luego por ejemplo utilizar StringReplace, para sustituir la coma por el punto.

Si la ocasión lo merece puedes construirte una función que haga todo en uno y que compruebe también la integridad de los datos a convertir.

Un Saludo.

Kipow
26-12-2008, 22:18:51
Lo que veo yo es que el valor CurrencyEdit1.Text, es el valor numerico con formato, proba con esto

ibsql1.parambyname('precio').AsFloat := CurrencyEdit1.Value;