Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Cita:
Empezado por IVAND Ver Mensaje
...pero repito es solo una pregunta no una aseveracion...
Bueno, entonces que algún moderador corrija el título y le ponga los signos de interrogación que toda pregunta lleva.

Aunque, siendo justos, creo que quedaría mejor el título Raro almacenamiento de decimales en Firebird.

Un abrazo serio y políticamente correcto.

Al González.
Responder Con Cita
  #2  
Antiguo 05-12-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Después de más de 10 años usando interbase->firebird... me parece muy seria


P.d. para usar valores con decimales siempre uso double.
Responder Con Cita
  #3  
Antiguo 05-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
P.d. para usar valores con decimales siempre uso double.
Interesante casimiro, ¿realizas algún tipo de redondeo? ¿en delphi asignas al campo Currency:= true?

Me deja intrigado tu afirmación.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 05-12-2007
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
Segun he leido aun hace la coneccion por BDE
tubimos el mismo problema en la empresa pero trabajabamos con Paradox
Hicimos una configuacion en el alias que se manejaba para la base de datos colocando ENABLE BCD en true y nos redujo mucho el problema
No se si maneja alias y si ya lo esta configurado asi
Puede hacer la prueba y nos cuenta como le fue
Responder Con Cita
  #5  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, creo que la combinación de todas estas cosas ayudara a resolver el problema .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 05-12-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe Ver Mensaje
Interesante casimiro, ¿realizas algún tipo de redondeo? ¿en delphi asignas al campo Currency:= true?
Me deja intrigado tu afirmación.
Saludos
Ni siquiera sé dónde está eso de currency:=true

Yo creo los campos (y tablas y todo) en un script.sql y desde delphi uso los querys y nada más, en ningún sitio indico si es currency u otra cosa, son simplemente valores.
Cuando son importes totales de un documento (pedido,factura,etc.) sí guardo los valores redondeados a 2 decimales (euros), pero sólo en los importes totales (base,iva,total) no en los precios de los artículos (por ejemplo), estos es según lo que configure cada cliente, los decimales que quieran cada uno (la presentación) ya que internamente van todos los decimales.
Responder Con Cita
  #7  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Lo de currency es una propiedad de los campos, la puedes ver haciendo click en el editor de campos sobre un campo numerico.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 05-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Después de repasar todo lo aportado por los compañeros y mirar detenidamente el datadef.pdf, estamos en la misma situación. En resumen:

Dialecto 1 con precision mayor a 9 usando DOUBLE PRECISION, siempre tendrá problemas de decimales que pueden ser redondeado donde legalmente se pueda (como bien dijo Casimiro, en los totales; nunca se puede redondear en cálculos intermedios)

Dialecto 3 con precisión mayor a 9 , da igual si se usa NUMERIC(10,2), DECIMAL(10,2) o DOUBLE PRECISION, Firebird usará un INT64 internamente para representar el número y no habrá pérdida de decimales.

Si la precisión es menor o igual a 9, internamente se usará smallint, integer, double precision, etc. dependiendo del tipo usado. En este caso no queda más remedio que ver el pdf para entender como se guarda internamente.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 05-12-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jhonny Ver Mensaje
Lo de currency es una propiedad de los campos, la puedes ver haciendo click en el editor de campos sobre un campo numerico.
ummm, pues no, nunca me ha hecho falta usar esa propiedad.
Responder Con Cita
  #10  
Antiguo 05-12-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
OFFTOPIC: no sé por qué, pero hoy tengo ganas de "guerra sana"
y de guerra santa? no tienes ganas?

Que efecto tiene asignar la propiedad currency a True en un field???
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #11  
Antiguo 07-12-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
una inquietud... entonces me imagino que es recomendable asignar los valores de la siguiente forma??:

Código Delphi [-]
    QConsulta.FieldByName('campo_doble').AsBCD := varFlotante;


y no así:


Código Delphi [-]
    QConsulta.FieldByName('campo_doble').AsFloat := varFlotante;
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #12  
Antiguo 07-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No serviría de nada. No se perdería definición en Delphi, pero al guardar en la base de datos, es cuando se produce el fallo (porque es inherente al tipo de datos double precision o Float en dialecto 1).

Bien es verdad, que teniendo un campo definido como Float y usando siempre .AsCurrency (tanto para mostrar como para asignar un valor al campo) estamos minimizando el problema. Queremos guardar el valor 23.30:
Código Delphi [-]
campo.AsCurrency := 23.30;
// en la base de datos quedará como 23.29999999   (un suponer)
tabla.post
ShowMesage(FloatToStr(campo.AsCurrency));
// al leer como Currency, normalmente se hace un redondeo y mostrará 23.30

El problema añadido, es que al utilizar ese valor en operaciones matemáticas los errores de decimales se van acumulando.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 18-12-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

No queria opinar este hilo pero tengo que hacerlo.

Mira cual como se deberia llamr este hilo.

Yo no se usar firebird. Y por eso digo que no es seria.

Ven que asi se ve mejor.

Se supone que oaracle es un manejador de base de datos y me toco auditar un sistema con una base de datos que no orecle la podia soportar de lo mal diseñada que estaba. Eso tiraba errores por todoss las lados las mismas consultas devolbian valores diferentes y mucas cosas mas(Usaron una sola tabla para realizar un registro de personas con sus familiares nacionalidades y otro nmonto de datos mas).

Tabien sabian que c es el lenguaje mas potente que existe. pero he visto unas poruqerias de aplciaciones echas con c.

El titulo que sugeri antes tanpoco esta bien es un poco despota.
Pero este si.
Cuando el panadero es malo le echa la culpa a la harina.

Ese si esta bello.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #14  
Antiguo 18-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.561
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por rastafarey Ver Mensaje
Tabien sabian que c es el lenguaje mas potente que existe. pero he visto unas poruqerias de aplciaciones echas con c.
, según quien.........

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
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


La franja horaria es GMT +2. Ahora son las 11:21:06.


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