![]() |
Error al Actualizar Decimales
1 Archivos Adjunto(s)
Hola amigos:
Su pesadilla otra vez :) Tengo el siguiente problema, estoy trabajando con Mysql 5.1 y Delphi Tokio. Tengo un valor con decimales, pero solo cuando actualizo me da el siguiente error (ver imagen)
Ya revise el campo en la tablas Mysql y es de Double(15,4) Estoy usando la siguiente funcion para validar el punto o coma, como separador de miles o decimales.
|
Hola, proba con:
Editado, entendí mal y estas grabando un valor como texto. No convendría modificar la tabla y grabar un valor numérico? |
si utilizas FloatToStr() lo conviertes a cadena de texto, quizas deberias usar la funcion FormatFloat()
La función FormatFloat en Delphi se utiliza para dar formato a un número de punto flotante (float) de acuerdo con una cadena de formato especificada. Sintaxis: Código:
function FormatFloat(const Format: string; Value: Extended): string; Value: Es el número que deseas formatear. Ejemplo: Código:
var 0: Se usa para forzar la aparición de ceros en posiciones vacías. #: Representa un dígito opcional. No se muestra si no hay dígito en esa posición. .: Se utiliza como separador decimal. ,: Se utiliza como separador de miles. |
Formato simple:
Código:
FormatFloat('0.00', 123.456); // "123.46" Código:
FormatFloat('#,##0.00', 12345.678); // "12,345.68" Código:
FormatFloat('+0.00;-0.00', -123.45); // "-123.45" |
Es mejor y más seguro usar parámetros, tal y como ha explicado aledieb
Y de todas formas, a simple vista me parece que esto está mal: Porque al hacer floatostr ya te devuelve el valor entre comillas (un string), y tú estás añadiendo más comillas. |
Lo primero que voy hacer es aplicar la sugerencia de Casimiro y si no resulta ire escalando en las soluciones propuestas
gracias |
Estimado pruz, me tome la libertad de sugerir lo siguiente...
Como indican los colegas, es una muy buena alternativa el utilizar parámetros para asignar los datos a actualizar en la sentencias SQL. Simplifica y clarifica el código... Saludos cordiales |
lo primero que hay que tener en cuenta es que ha dicho en el primer post que su base de datos tiene un valor numerico con decimales asi que pasarlo a string aparte de ser una tonteria no servira para almacenarlo en un float numerico en la BD (y digo tonteria porque si el campo de la BD es numerico con decimales que sentido tiene pasarlo a string? quiero decir si el objetivo parece ser almacenarlo en la BD, no mostrarlo en un ShowMessage o cosas parecidas) y tambien para que tantas lineas de codigo si con FormatFloat de 1 sola linea ya lo puedes ajustar a lo que necesitas? (me refiero al primer post donde utiliza una funcion para los miles)
y si cloayza, asi como lo muestras yo tambien lo utilizo para construir las sentencias SQL de los queries, funciona muy bien el ParamByName y lo simplifica a la hora de construir la sentencia con datos dinamicos que puedan variar |
Hola a todos:
Listo, solucionado aplique la solucion "cloayza", solo la parte del UPDATE. funciona perfecto muchas gracias |
La franja horaria es GMT +2. Ahora son las 18:21:39. |
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