FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 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.
__________________
Saludos desde Quilpué, CHILE |
#2
|
|||
|
|||
Hola:
No entendí porque en la sentencia pones: 'update materiales set cantidad=cantidad.... lo que no entiendo porque cantidad = cantidad como cadena Saludos
__________________
Ernesto R. |
#3
|
|||
|
|||
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.
__________________
Saludos desde Quilpué, CHILE |
#4
|
|||
|
|||
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
__________________
Ernesto R. |
#5
|
|||
|
|||
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
__________________
Ernesto R. |
#6
|
||||
|
||||
¿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?.
|
|
|
|