Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2011
luifervm luifervm is offline
Miembro
 
Registrado: nov 2009
Posts: 12
Poder: 0
luifervm Va por buen camino
Error al grabar valores con FloarField o CurrencyField

Hola !!

Tengo un error grave y en realidad no he podido decifrar que es lo que sucede:

En la base de datos en SQLSERVER tengo un campo tipo decimal(19,4) que se llama VALOR.

Teniendo el ClientDataset en dos escenarios el programa toma ese campo VALOR como tipo FloatField, y en otros casos como CurrencyField.

El problema que tengo en uno u otro caso es que al grabar valores, el valor que esta utilizando internamente tanto el que graba en la tabla no corresponde al valor digitado.

Al digitar,por ejemplo, 9.29 el valor que trabaja internamentertanemte y graba en la tabla es 9.2899 .... O.o ... Estos calculos son para unos valores en donde los decimales son importantes pero no entiendo por que me esta haciendo este "redondeo" extraño.

Si alguien tiene una idea de por qué sucede esto, se lo agradezco.
Responder Con Cita
  #2  
Antiguo 13-07-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Si no me equivoco es porque aunque quieras grabar 9,29 el campo está definido como decimal(19,4) con lo cual la base de datos debe guardar 4 decimales. Y 9.2899 es lo que más se aproxima.
De todas maneras, te insto a que te documentes más acerca de guardar valores con coma flotante.

Por otro lado, puedes cambiar el tipo de field en el ClientDataSet a tu gusto: si necesitas TFloatField o TCurrrencyField.

Saludos!
Responder Con Cita
  #3  
Antiguo 13-07-2011
luifervm luifervm is offline
Miembro
 
Registrado: nov 2009
Posts: 12
Poder: 0
luifervm Va por buen camino
Hola ! . Nope ! el problema no tiene que ver con la base de datos en si... es decir, al yo digitar 9.29 en la base de datos debería quedar 9.2900. En realidad este no es el problema que tengo puesto que haciendo debug puedo mirar lo que esta moviendo el programa ANTES de hacer post. Independientemente de si escojo FloatField o CurrencyField el problema persiste, así que me da igual escoger uno o el otro. He hecho varias pruebas, y puedo decir que en el evento validate del campo VALOR puedo mirar que valor trae el campo cuando se digita. En ese caso puedo ver que el valor digitado que me aparece es 9.29 y hasta ahi no hay problemas, pero cuando llego al evento before post puedo ver que el valor me cambia a 9.2899 y ahi en realidad lo unico que se pude concluir es que en el momento en que el programa asigna el valor al campo esta haciendo algo que no es para que cambie el valor 9.29 por 9.2899. Puede ser algún ti'po de bug ?? o algo que haya que configurar a los campos?... Si alguien sabe algo, lo agradezco !.
Responder Con Cita
  #4  
Antiguo 13-07-2011
luifervm luifervm is offline
Miembro
 
Registrado: nov 2009
Posts: 12
Poder: 0
luifervm Va por buen camino
Por cierto... esto no es un problema de SQLSERVER según todas las pruebas, en realidad es del DELPHI y me movieron el hilo aqui, si alguien sabe con quien hablar para que lo devuelvan a "Varios" se lo agradezco.
Responder Con Cita
  #5  
Antiguo 14-07-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
El problema puede estar en la definición de la variable local en que tipo la definas, yo tenia algo parecido, estaba trabajando con el tipo Double y me pase al tipo Extended, a la hora de guardar los datos lo hacia diferente, ya no me pasa.

Código Delphi [-]
var
  Valor: Double, Sustituir por Extended;
Un saludo.
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
Error al grabar un campo blob desde stream fjcg02 SQL 2 25-11-2009 22:02:49
Insertar valores...Error tebre Conexión con bases de datos 10 18-02-2009 19:34:40
.mdb-ADO, forma de grabar los cambios. Refresh me da error Wonni Conexión con bases de datos 3 19-06-2007 03:22:27
Error al Grabar informacion The_figo MySQL 0 30-10-2006 17:53:53
Error al grabar silviodp Conexión con bases de datos 5 31-05-2004 17:52:34


La franja horaria es GMT +2. Ahora son las 20:52:43.


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