Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2017
tinlespaul tinlespaul is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 3
Poder: 0
tinlespaul Va por buen camino
Mysql-ODBC- numeros decimales

Hola gente, a ver si alguien ha tenido este problema:

Tengo un sistema en el cual trabajo con delphi 2010, ODBC y Mysql.
Hace mucho tiempo que intento descubrir el origen de un error, que estoy casi seguro lo genera el odbc (version 3.51). El problema surge al momento de guardar un número decimal. Si se corre al programa en modo debugg, no hay problema y los números decimales se guardan de manera correcta en la BD. Si el programa luego se ejecuta desde el .exe, los redondea. A veces, borrando toda la tabla y volviendo a cargar los valores, funciona cuando se ejecuta desde el ejecutable, pero no en modo debugg.
A alguien le paso algo así?
Lo peor de todo es que no consigo MyDac (gratis) para delphi 2010...si no, ni hubiera dudado en usarlo, antes que al maldito ODBC.

Ojalá alguien tenga la respuesta.

Saludos!
Responder Con Cita
  #2  
Antiguo 22-02-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por tinlespaul Ver Mensaje
Lo peor de todo es que no consigo MyDac (gratis) para delphi 2010...si no, ni hubiera dudado en usarlo, antes que al maldito ODBC.
Yo también llevo tiempo intentando conseguir un Porsche (gratis), pero nada, tengo que seguir con mi maldito cacharro

En cuanto a tu pregunta, creo que necesitas aclararnos un poco más y poner tu código.
Responder Con Cita
  #3  
Antiguo 23-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
También podría usar ZEOS (gratis) y dejarse de maldiciones

LineComment Saludos
Responder Con Cita
  #4  
Antiguo 23-02-2017
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Prueba con versiones anteriores del controlador haber presenta el mismo problema.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #5  
Antiguo 23-02-2017
tinlespaul tinlespaul is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 3
Poder: 0
tinlespaul Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo también llevo tiempo intentando conseguir un Porsche (gratis), pero nada, tengo que seguir con mi maldito cacharro

En cuanto a tu pregunta, creo que necesitas aclararnos un poco más y poner tu código.

Si...es que tampoco hay nada raro... osea, por ejemplo:

sql:='UPDATE 008_Conceptos SET '+
'Conc_Importe=:qImporte,Conc_Actualizable=:qActua,Conc_NroOrden=:qOrden '+
'WHERE Conc_ID='+inttostr(Var_Global.ID_Conceptos);

dm.Q_Conceptos.Close;
dm.Q_Conceptos.SQL.Clear;
dm.Q_Conceptos.SQL.Add(sql);

dm.Q_Conceptos.Parameters.ParamByName('qImporte').Value :=strtofloat(t_importe.text);
dm.Q_Conceptos...
dm.Q_Conceptos...

dm.Q_Conceptos.ExecSQL;



Ni siquiera entro en el detalle del formato del Nro real que deseo. El error es que si funciona en modo debugg (guardando el nro con sus decimales), no funciona ejecutando el .exe (lo redondea) , y viceversa...la pregunta era si a alguien le había pasado algo así...es muy raro. Llevo mucho tiempo luchando con esto y leyendo millones de foros y no hay solución... Probé muchisimos Drivers y nada...siempre el mismo problema.

Voy a tener que usar Zeos...
Responder Con Cita
  #6  
Antiguo 23-02-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, antes de continuar:
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración

Y recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #7  
Antiguo 23-02-2017
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Que tipo de datos tiene en la tabla la columna Conc_Importe?. Si el tipo de dato es float o double la propia base de datos puede tener tendencia a "redondear" o aproximar los datos. Este comportamiento me ha ocurrido en Firebird 2.5. El problema lo he corregido utilizando tipos de datos DECIMAL o NUMERIC en las columnas de las tablas.

Otro punto a tener en cuenta es que la función strtofloat es sensible a la configuración regional y puede estar omitiendo el texto posterior al "punto" o "coma" decimal al realizar la conversión, aún cuando se haya establecido correctamente la variable global DecimalSeparator a menos que también se use la instrucción Application.UpdateFormatSettings := False;.
Responder Con Cita
  #8  
Antiguo 24-02-2017
tinlespaul tinlespaul is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 3
Poder: 0
tinlespaul Va por buen camino
Cita:
Empezado por orodriguezca Ver Mensaje
Que tipo de datos tiene en la tabla la columna Conc_Importe?. Si el tipo de dato es float o double la propia base de datos puede tener tendencia a "redondear" o aproximar los datos. Este comportamiento me ha ocurrido en Firebird 2.5. El problema lo he corregido utilizando tipos de datos DECIMAL o NUMERIC en las columnas de las tablas.

Otro punto a tener en cuenta es que la función strtofloat es sensible a la configuración regional y puede estar omitiendo el texto posterior al "punto" o "coma" decimal al realizar la conversión, aún cuando se haya establecido correctamente la variable global DecimalSeparator a menos que también se use la instrucción Application.UpdateFormatSettings := False;.
Si, son muy acertadas tus recomendaciones.
El tipo del campo es DECIMAL (10,2).
Tengo en cuenta el DecimalSeparator y la configuración regional. Lo raro de esto, es que a veces se genera el problema y a veces no. Por eso es muy difícil descubrir que es lo que está pasando.
Quizás tengo algún error implícito con el ODBC y ni cuenta me estoy dando. Empece a usar Zeos y me funciona perfecto.
Debido a que es un sistema importante (en cuando a cantidad de módulos y operaciones) dudaba en utilizarlo, no se que confianza tenerle a Zeos...pero por el momento funciona.

Tengo un sólo problema con Zeos, que no tiene que ver con conversiones, sino que al ejecutar el paso a paso usando un BreackPoint me acusa el error "Source File not found ZAbstractRODataset.pas" en el primer intento de hacer un trace to next source line.
No se si a alguien le pasó algo así...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
mostrar números decimales lucas05 Varios 5 07-12-2011 16:40:58
guardar números decimales lucas05 Varios 3 29-11-2011 19:52:52
Numeros con más de 18 decimales HySTD Varios 1 21-08-2008 21:10:32
mostrando numeros decimales ercrizeporta Varios 2 01-07-2007 21:05:24
Imprimir NÚmeros Sin Decimales jadelphi Varios 2 12-04-2005 12:07:21


La franja horaria es GMT +2. Ahora son las 21:13:07.


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