![]() |
Problema al Actualizar Valor Double
Saludos muchachos.... tengo un problemita que no he podido solucionar... Sucede que tengo un ADOQuery en el cual hago un select de todos los registros de una tabla de productos. Luego, de acuerdo a unos botones de First, Previous, Next y Last me muevo entre los registros. Tambien tengo opciones para grabar los registros (insertar y actualizar) y para eliminarlos.
Sucede que cuando yo recupero un registro (del ADOQuery) y despliego el valor de los campos de la DB en los campos del form (son campos normales no son componentes de bases de datos) todo funciona perfecto. Cuando presiono el boton para actualizar los datos me di cuenta de que si ninguno de los campos cambio su valor me daba un error diciendome: "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó". Bueno, debido a este error tuve que comparar los valores de los campos del form con los valores de los campos de la DB para ver si habia algun cambio y entonces hacer la actualización. Lo hize y funciono perfectamente. Pero sucede que ahora me da ese mismo error cuando actualizo el campo PRECIO que es de tipo DOUBLE en la base de datos. Si quito la parte donde se actualiza este campo todo funciona perfectamente. Pero si dejo esa parte (incluyendo la parte donde comparo los valores) entonces el programa me da el error antes mencionado. Necesito su ayuda urgente con este asunto. Yo utilizo Delphi 7 y MySQL 5.0.19 y me conecto a traves de ODBC con el driver MySQL ODBC 3.51. Aqui les pongo el código de la actualización por si les sirve de algo:
|
Aunque no tenga decimales, puesto que está declarado como double, deberías buscar la coma o el punto decimal (a saber lo que ha puesto el usuario), despues reemplazarla por un punto (ya que es el separador decimal que espera StrToFloat) o usar SysUtils.DecimalSeparator para averiguar cual es; por último, añadirle al menos un decimal (un cero) para que pueda interpretarse como un Double.
Saludos y suerte. |
Gracias por tu respuesta Lepe
Eso que me dices yo ya lo he tomado en cuenta. Si notas en el codigo yo sustituyo la coma por un string vacio. |
Pero entonces no es un Double, no tiene parte decimal, además si tenemos 150,40 €y quitas la coma, quedaría 1540 € que al pasarlo a double sale 1540.00 € ¿no?:confused:
Saludos |
saludos:
pues que yo sepa ese es un error de delphi 5 en el D7 deberia no dar problemas con "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó". y mas con ado, yo lo use y baje el driver para mysql 3.51.12 despues de ir buscando, decidi desinstalarlo el D7 y volver a instalar y todo los demas componentes que ya tenia, y ya no me salio, por que no se. y una cosa que he notado y espero que sea de ayuda es con los formatos de moneda, fecha y punto decimal asi me paso una vez y hasta que en aqui me mencionaron el tip que puediera ser, ademas no se porque el tipo extend es mas eficiente que el double en delphi o sera por las cantidad a manejar. Aun no lo se pero ami me paso eso del error, he cambiado de componentes y dejar los ado, ademas es una alternativa pero es una capa mas odbc. bye |
La franja horaria es GMT +2. Ahora son las 10:07:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi