Ver la Versión Completa : Error dando formato a un TFMTBCDField
HiroProtagonist
10-04-2006, 15:57:40
Hola foreros,
trabajo con Delphi 7 Build 8.1 con los updates al dia y me encuentro con el siguente error.
Tengo un campo de tipo TFMTBCD asociado a un componente del tipo TdxCalcEdit. A este campo le doy el siguiente formato:
TNumericField(myClientDataSet.FieldByName('myField')).DisplayFormat :=
'#0,.00';
Suponiendo que tengo los siguientes valores guardados en la base de datos (Firebird 1.5):
a) 9.999
b) 19.999
c) 29.999
resulta que des de mi control veo lo siguiente:
a) 10 :eek:
b) 20 :eek:
c) 30 :eek:
y realmente deberia ver:
a) 1
b) 2
c) 3
En cambio haciendo lo mismo con el valor 21.999 obtengo visualmente
el valor 23 !!!!
¿Alguna sugerencia?
Gracias por vuestro tiempo,
Hiro
HiroProtagonist
10-04-2006, 16:53:07
Perdón, pero en el post anterior describí mal el error de formato.
En realidad cuando escribo 9.999 sobre mi control el resultado que
espero al validar los datos és 10 pero realmente obtengo 1.
Como se suele decir "errare humanum est".
Gracias por vuestro tiempo,
Hiro
Thales
10-04-2006, 17:30:43
No hace mucho se me planteó a mi un problema similar, también con TFMTBCDFileld y DisplayFormat, problema que expuse en este hilo (http://www.clubdelphi.com/foros/showthread.php?p=119498) y que no resolví.
Al ver tu pregunta se me ha ocurrido buscar en google y, al parecer TFMTBCDField tiene registrados numerosos bugs, por lo que me temo que no vamos a poder solucionar nuestro problema.
http://qc.borland.com/wc/qcmain.aspx?d=2711
http://qc.borland.com/wc/qcmain.aspx?d=22410
http://qc.borland.com/wc/qcmain.aspx?d=23751
Un saludo
Thales
10-04-2006, 20:42:01
Dandole vueltas al tema he dado con una solución que, al menos a mi me sirve y consiste en hacer un cast en la consulta para traer los datos de la base de datos:
select cast(Campo as numeric(5,2))
from tabla
Así se consigue que el campo no sea del tipo TFMTBCDField, claro que esto no te servirá si en el campo tienes números grandes.
Un saludo
HiroProtagonist
11-04-2006, 09:05:07
Hola Thales,
gracias por tús respuestas, ya he enviado un mensaje a las news de Borland indicando el bug del formateo del TFMTBCDField. Si me saben dar alguna solución ya te lo comentaré. Lo que quería comentarte es que el comportamiento que describías en el hilo http://www.clubdelphi.com/foros/showthread.php?p=119498 (http://www.clubdelphi.com/foros/showthread.php?p=119498) creo que es correcto ya que tú informas el DisplayFormat de tú campo de tipo TFMTBCDField con "0.00" lo que le dices és que te lo redondee a 2 decimales, por lo tanto, para un valor del tipo 5.095 se convierte en 5.1 (donde el punto lo considero el simbolo decimal).
Saludos,
Hiro
Thales
11-04-2006, 10:36:52
No estoy de acuerdo contigo, pues el formateo correcto de 5,095 a dos decimales debería ser 5,10 y no 5,1. De hecho ahora que he hecho un cast y el tipo de campo es ya TBCDField ya lo hace bien.
Un saludo
HiroProtagonist
11-04-2006, 15:56:55
Buenas Thales,
sí ciertamente tienes razón debería ser 5.10 (me había dejado el cero)
Saludos,
Hiro
Oxa78
18-05-2006, 00:46:04
Saludos, yo tambien tengo el mismo problema con darle formato al campo numérico, por lo q si encontraron alguna solución porfa pasarla por el foro.
Graicas...
Joseph
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.