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 |
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 |
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 |
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:
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 |
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 |
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 |
Buenas Thales,
sí ciertamente tienes razón debería ser 5.10 (me había dejado el cero) Saludos, Hiro |
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