"Not a valid floating point value"
Hola a todos/as:
A ver si podéis ayudarme con este error, que me trae de cabeza ya. Tengo en una BBDD SQL Server una tabla que contiene posibles valores que puede tomar la capacidad de una botella. Al introducir un registro representando una botella, el usuario tiene que indicar la capacidad de la misma; la cuál tiene que aparecer reflejada en la tabla anterior. En el Validate del campo correspondiente en el DBgrid que utilizo, le tengo puesto un locate contra la tabla para averiguar si dicho valor está o no está. Pues bien, ese valor es un tipo "float" y me ocurría (es la primera vez que me ocurre y no sé qué diferencia puede haber con otras veces) que aunque introduzca un valor correcto, el Locate me devuelve false (con lo que salta el mensaje de error que le tengo definido en el código fuente). Probé a especificar explícitamente antes del locate: DecimalSeparator:=',' Pero no solucionó nada, seguía dando el mismo problema. Probé a poner un punto (.) en lugar de una coma (,) y aquí empezó a rizarse más el rizo: el DBGrid no me permite poner puntos directamente (si puslo el punto, no escribe nada). Si le pongo la coma al introducir el valor (teniendo incluso el separador como punto), la primera vez me convierte automáticamente la coma en un punto y lo guarda correctamente. Pero si, posteriormente, quiero modificar ese valor; ya no realiza esa conversión, sino que me salta el siguiente error: Código PHP:
Un saludo y gracias: David Rguez. |
Errata: el Validate es del ADOTable, no del DBGrid.
|
Supongo usas un campo de tipo double Precision, y este tipo de datos no son muy exactos, si guardas el valor 21.35, internamente se guardará como 21.34999999 ; cuando buscas 21.35 con Locate, no encontrará ese valor. Normalmente se soluciona cambiando el tipo de dato del campo a Numeric o Decimal, pero deberás mirar la documentación de SQL Server a ese respecto.
Si quieres que el punto (el que está en el teclado numérico) se use como una coma, mira este hilo, de hecho, para asignar un valor a sysutils.DecimalSeparator debes hacerlo al principio de la aplicación para que funcione correctamente. Saludos |
La franja horaria es GMT +2. Ahora son las 05:25:35. |
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