Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2007
david.rguez david.rguez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Zamora, la bien cercada
Posts: 104
Poder: 18
david.rguez Va por buen camino
"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:
Project xxxxxx raised exception class EDatabaseError with message ''0,75' is not a valid floating point value for field 'Capacidad'' 
¿Alguna idea de por qué ocurre eso? Yo entiendo el error, lo que no entiendo es por qué la primera vez lo transforma a punto y la segunda ya me da el error (aparte de que tampoco logro comprender por qué el locate no funciona correctamente antes que todo eso).

Un saludo y gracias:

David Rguez.
Responder Con Cita
  #2  
Antiguo 12-12-2007
david.rguez david.rguez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Zamora, la bien cercada
Posts: 104
Poder: 18
david.rguez Va por buen camino
Errata: el Validate es del ADOTable, no del DBGrid.
Responder Con Cita
  #3  
Antiguo 12-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
""" is not a valid floating point value con edit Petolansa Varios 6 11-12-2007 00:07:13
"floating point overflow" en campocalculado ANXO Conexión con bases de datos 0 22-01-2006 16:59:58
me da un errror is not valid floating point value en delphi uper Firebird e Interbase 2 30-12-2005 10:52:36
Error "class String Not Valid" toro2186 OOP 9 26-07-2005 16:23:30
1,253 is not valid floating point value soyhugo Varios 7 14-02-2004 05:40:53


La franja horaria es GMT +2. Ahora son las 22:44:41.


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
Copyright 1996-2007 Club Delphi