FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
problemas con decimales al insertar en tabla
Buenas amigos,
La verdad no se donde puede estar el problema. Tengo una tabla que tiene un campo decimal(4,2) le escribo en un edit 5.38 y me lo guarda como 5.37. Ya probe a hacer
le puse 5.38, lo convierto y lo vuelvo a mostrar con el showmessage y me marca 5.38, pero a la hora de guardarlo me pone 5.37. Ya probe a añadirlo directamente con un dbgrid y no hay problema, me pone 5.38. No me pasa con todos los numeros, solo con algunos, por alguna razon a la hora de escribir en la tabla lo redondea o nose, porque si le pongo en el edit, por ejemplo 5.388 si me guarda 5.38. Ya revise el query por si habia algo en las propiedades pero no lo encontre. y la cosa esta rara . alguno sabe por donde puedo mirar? |
#2
|
||||
|
||||
Hola anubis.
Puede producirse por el tipo definido en la creación de la tabla o por el modo de asignación que estas haciendo al componente. Te aconsejo usar tipos escalados en la definicion de la tabla: Usando NUMERIC y DECIMAL. Y desde Delphi usar el tipo Currency de este modo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
si gracias por responder pero use decimal(4,2), el problema ahora es mayor proque si cambio el asfloat por ascurrency, ademas de haber cambiado en el query
donde campo6 es del tipo currencyfield y el campo3 es floatfield, ahi el currency da error de violacion. Pense que si cambiaba el floatfield por currencyfield era lo mismo. |
#4
|
||||
|
||||
Bueno el tema del currency la verdad nose porque no funciona asignandolo a currency, sale un aviso de operacion de coma flotante invalida.
Ya habia hecho un miniprograma de una base de datos ejemplo para probar todo esto y al final tuve que cambiar el tipo decimal(4,2) por numeric(6,2), pense que la decimal era de mas precision que la numerica, pero bueno ya quedo bien el tema gracias |
#5
|
|||
|
|||
Me extraña el asunto siendo decimal el campo, no sé tampoco que sistema gestor de bd estas utilizando. Yo siempre le echo la culpa al paso de decimal a binario cuando me pasan estas cosas con algunos números y con otros no. Entonces compruebo si al pasar de decimal a binario dan un valor exacto en binario o son periódicos. Cuando es un decimal exacto y en binario también no hay problema pero cuando en binario pasa a ser periodico me pasan estas cosas asi que al final siempre acabo redondeando a mano a los decimales que necesito los campos que leo de la bd. Mis investigaciones al respecto me han llevado a la conclusión de que la mayoria de las bd guardan en binario los datos númericos y cuando estos son flotantes pueden surgir este tipo de problemas.
Última edición por engranaje fecha: 15-09-2014 a las 11:58:45. |
#6
|
||||
|
||||
gracias por contestar.
uso firebird y la verdad tampoco entiendo porque hace eso, aun probando en un base de datos nueva de ejemplo. pero bueno ya pude cambiar a numeric y funciona pero no deja de ser extraño |
#7
|
|||
|
|||
Ecfisa tienes un privado. Gracias!
__________________
Saludos, Bitman |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ajustar decimales en Tabla Paradox. | zeta2 | Conexión con bases de datos | 3 | 13-04-2010 00:36:14 |
Insertar y/o modificar un campo con decimales | rafita | Varios | 5 | 30-07-2007 10:41:28 |
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla | taru | MySQL | 1 | 27-07-2006 15:36:12 |
Problemas al insertar en una tabla | vhirginia | Conexión con bases de datos | 30 | 21-04-2004 22:54:57 |
Como insertar datos de una tabla en otra tabla? | Salomon | Firebird e Interbase | 1 | 28-08-2003 11:29:40 |
|