![]() |
![]() |
| Paypal | 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
|
||||
|
||||
|
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. |
|
#2
|
|||
|
|||
|
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 |
|
#3
|
||||
|
||||
|
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/ |
|
#4
|
||||
|
||||
|
Cita:
![]() 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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
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/ |
|
#6
|
||||
|
||||
|
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. |
|
#7
|
||||
|
||||
|
ummm, pues no, nunca me ha hecho falta usar esa propiedad.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#8
|
|||
|
|||
|
Cita:
![]() Que efecto tiene asignar la propiedad currency a True en un field??? |
|
#9
|
||||
|
||||
|
... no lo sabes tú bien, con sangre y todo de por medio... pero me contengo
.Teniendo un campo Float (TFloatField), da la apariencia de ser un Currency: muestra el símbolo de la moneda y dos decimales, al editar también se mantiene este formato (si EditFormat y DisplayFormat están en blanco). Por eso lo pregunté, ya que si es un double precision y estableces la propiedad en True, el propio TField puede camuflar el valor real que tiene asignado. Por ejemplo: valor real 2,539 valor mostrado en el DBedit (por currency:= true) 2,54 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: 05-12-2007 a las 20:18:42. |
|
#10
|
|||
|
|||
|
Esto se puso interesante , pues aqui va otra pregunta si uso double precision el problema desaparecera o no ? bueno eso lo voy a probar luego en el trabajo , pero a ud que ya tienen mucha experiencia en esto de los dialectos , cuales son los problemas mas comunes de migrar de dialecto 1 a dialecto 3 , hay que cambiar los querys o algo mas ?
Por lo que parece lo mejor sera usar dialecto 3 verdad? Gracias por su aporte
__________________
IVAND |
|
#11
|
||||
|
||||
|
una inquietud... entonces me imagino que es recomendable asignar los valores de la siguiente forma??:
y no así:
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
#12
|
||||
|
||||
|
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:
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. |
|
#13
|
||||
|
||||
|
Al parecer este hilo puede llevar a confusiones al que busca en los foros.
En resumen: El problema es del tipo double precision y Float en todas las bases de datos. Aunque como ya se ha visto en Firebird y Dialecto 3 se ha resuelto el problema. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#14
|
||||
|
||||
|
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. |
|
#15
|
|||
|
|||
|
Cita:
![]() ![]() , según quien.........Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#16
|
||||
|
||||
|
resp
Segun nadie.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|