Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error dando formato a un TFMTBCDField (https://www.clubdelphi.com/foros/showthread.php?t=30558)

HiroProtagonist 10-04-2006 15:57:40

Error dando formato a un TFMTBCDField
 
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

Error dando formato TFMTBCDField
 
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 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:

Código SQL [-]
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 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


La franja horaria es GMT +2. Ahora son las 20:52:08.

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