FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
¿El uso de firebird como una base seria no es tan correcto?
Hola a todos utilizo firebird 1.5 , tengo una tabla con la siguiente estructura
pero mi pregunta fue hace un tiempo en este mismo foro que porque si tengo un dato como por ejemplo 120,30 , esta base de datos me lo graba tal como lo digito pero si escribo 1201,30 la base me muesta 121,3099999999999997 cuando salgo del campo me muestara 1201,30 pero al momento de hacer los calculos estos son totalmente equivocados pues la suma me da un valor de -0,001 lo cual impide que este diario contable se cierre de manera correcta En este mismo foro se comento tal problema pero si alguien de uds lo ha podido corregir me ayudaria enormemente Si el problema persiste creo que dejare de usar esta base de datos o el problema tambien la tienen otras base de datos Ojo este ejemplo lo estoy realizando desde el Ibexpert Imaginesen este caos en un banco Gracias por su interes
__________________
IVAND |
#2
|
||||
|
||||
Bueno, recuerdo muy bien tu hilo anterior ya que yo estaba unido a tu causa y estaa totalmente de acuerdo contigo, la verdad es que es algo demaciado molesto y complicado de llevar, recuerdo que en ese hilo llegamos a la conclusión de que quizá cambiando la BD a Dialecto 3 mejoraria el asunto, a partir de ese entonces comenzamos un proyecto en mi empresa para cambiar de Dialecto nuestra base de datos y realizar las pruebas necesarias con bases de datos con datos veridicos, aún estamos realizando estas pruebas pero debo decirte que hasta ahora todas han sido satisfactorias, ya no tenemos problemas al sumar todos esos valores debido a que al parecer con Dialecto3 la cosa es diferente, poniendo tu caso como ejemplo:
Antes en Dialecto1, veiamos lo mismo que tu al digitar un valor, si digitabamos: 1201,35 él almacenaba 1201,359999999999999 Ahora con Dialecto3, tambien se "inventa" esos números de mas pero de manera diferente, si digitamos: 1201,30 él guarda 1201,34999999999 Por lo que al redondear a dos decimales en nuestros reportes tendremos el valor correcto . Para probar eso hicimos un Sum de toda nuestra tabla de contabilidad, luego de haber "redigitado" (entre comillas porque hice un software que hacia eso automaticamente, simulando que alguien los digitaba) de nuevo todos los documentos y el saldo nos dio 0, cuando antes nos mostraba 0.01. Nota: Para cambiar de Dialecto1 a Dialecto3 tuve extraer el Metadata y con el mismo IbExpert ejecutarlo en una BD creada con el nuevo Dialecto, el Script mostró muchos errores debido a la incompatibilidad entre los dos dialectos y a medida que los iba corrigiendo, lo ejecutaba de nuevo hasta corregir todos y cada uno de ellos, tanto en los Stored Procedures, como en la aplicación.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Cita:
jhonny: no he hecho pruebas, pero quizás el problema continúe por no realizar una correcta migración de datos. Ya digo, en tu caso particular no tengo ni idea. Lamentablemente, la ignorancia es así, criticamos por desconocimiento y arrogantemente. PD: Ese libro es gratuito y descargable desde www.ibphoenix.com Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 04-12-2007 a las 18:00:36. |
#4
|
||||
|
||||
Y vamos a la página 67 para una correcta migración de los datos:
Cita:
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 04-12-2007 a las 17:58:54. |
#5
|
||||
|
||||
jhonny: una pregunta, ¿Qué componentes usas para conectar a Firebird? Yo uso los MDO y me crea los campos persistentes como TBCDFields (Binay Coded Decimal) que es el representante sin pérdida de decimales.
Si en Delphi usas aún TFloatFields, vendría por ahí el fallo de guardar mal los decimales (supongo). Ya digo, Firebird 1.5 en dialecto 3 con numeric(10,2) + MDOLIB = números correctos en los DBEdits, en Base de Datos "espulgada" con IB Expert y en los cálculos entre varios campos de tipo BCD. Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
|||
|
|||
Gracias amigo Jonny entonces tu tesis es que migrando a dialecto 3 estos problemas desaparecen o al menos se minimizan , no has encontrado otra manera de hacerlo pues me va a ocurrir lo mismo que a ti , pero bueno ahi le vamos a dar ,
Nota :Lamentablemente, la ignorancia es así, criticamos por desconocimiento y arrogantemente. Sr. Lepe , todos somos ignorantes , si no pregunto seguiria en mi ignorancia, no lo hago de manera arrogante ni mucho menos simplemente es por mi ignorancia y desconocimiento pero igual gracias por su ayuda
__________________
IVAND |
#7
|
||||
|
||||
Cita:
OFFTOPIC: no sé por qué, pero hoy tengo ganas de "guerra sana" . Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
Cita:
En lo que no estoy de acuerdo es en el titulo de tu hilo : "El uso de firebird como una base seria no es tan correcto" Ya que aqui efectivamente estas pecando de arrogancia, ya que te crees con la suficiente "autoridad" o "conocimiento" para poder hacer esa aseveración, cuando mas de 2.500.000 de personas han descargado firebird y ademas de ser nombrado el proyecto del mes por sourceforge no creo que sea por ser una base de datos "broma" (o no tan seria como afirmas). El hecho que te esté dando problemas lo atribuyo a tu falta de conocimiento y no a la base de datos en si. Saludos |
#9
|
|||
|
|||
Gracias Lepe por tu aclaracion , yo tambien aclaro lo siguiente no es que uno se cree con la autoridad ni nada de eso, lo del titulo es solo una pregunta de una persona que se encuentra con un problema para mi muy dificil de tratar , aqui nadie es una total autoridad se supone que es un foro para preguntar algo y eso
Si mi titulo les parecio algo duro pues mil disculpas pero repito es solo una pregunta no una aseveracion Gracias por entender Bueno cambiare a dialecto 3 y veremos como nos va pues creo que ese sera el mejor camino
__________________
IVAND |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
cual seria el costo de iniciar firebird desde cero | gmontes | La Taberna | 3 | 15-05-2007 00:58:13 |
Como conectarme a una base de datos hecha en firebird? | JuanErasmo | .NET | 5 | 30-12-2006 18:13:03 |
Firebird, ¿he hecho lo correcto? | kovaski | Firebird e Interbase | 4 | 03-10-2006 21:18:17 |
cual seria el componente correcto? | DM2005 | Varios | 0 | 04-07-2006 21:55:39 |
cual seria la mas adecuado base de datos... | ronimaxh | Firebird e Interbase | 8 | 23-04-2004 17:47:15 |
|