Ver Mensaje Individual
  #4  
Antiguo 06-08-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
Gracias; pero en mi caso no aplica

Hola egostar,

Ante todo, muchísimas gracias por el interés.

Infortunadamente, en mi caso, esa solución no aplica porque el problema no es al momento de desplegar el dato; por tanto, los formateos usuales de Delphi no ayudan. El problema lo tengo en el momento mismo en que el driver recupera el dato desde el cliente db2.

En mi caso, ni siquiera uso el TClientDataSet. El problema ocurre desde la recuperación por parte del query. La misma propiedad AsBCD, que se supone trae el dato nativo, viene equivocada. De hecho, las rutinas de formateo de string, que trabajan a partir de ese dato "nativo", están bien.

Por cierto, hay una observación importante para tú código. Estás usando AsFloat. Los valores de doble precisión manejados por AsFloat funcionan bien; pero, mis campos son TFMTBCDField porque usamos decimal(18,2), que excede la capacidad de los double precision (o sea, no puedo obtener los valores con AsFloat). Desgraciadamente, nosotros necesitamos esa precisión y son muchísimos los campos definidos así.

Concuerdo en que el principal problema es el driver, he investigado, y sospecho que es un error introducido en la versión 2007. Me explico:

Según documentación encontrada en Internet, el error, que viene desde el principio de dbExpress, fué solucionado en la versión 2006 (no la tengo, y no puedo confirmar la veracidad de ese dato).

En la versión 2007, explican que dbExpress fué reescrito y al parecer hay una curiosidad. La versión de dbExpress que viene ahí es la 4; pero, como viene con soporte para la 3, los nombres de los drivers los dejaron con el sufijo 30, que hace pensar que es la vesrión 3.0 .

Lo importante es que si la reescribieron, es probable que hayan cometido un error y por eso el parámetro Decimal Separator haya dejado de trabajar bien.

Los reportes son todos antiguos, así que sospecho que la gente se había aburrido de los diversos problemas que daba la herramienta y cuando arreglaron ya era tarde. Eso parece confirmarlo el que en este foro muy pocos trabajan dbExpress y mucho menos db2. Por eso, es probable que no haya habido presión reciente para corregirlo.

Vale anotar que el problema lo reporté con nuestro distribuidor nacional, este a su vez me dice que lo escaló a la casa matriz; pero, me temo que, si lo arregaln, la solución llegará demasiado tarde para mi.

No sobra mencionar que también concuerdo en que el problema no está en la Base de Datos; pero, creo que si hay también una falla grande de diseño en el cliente db2 como tal, porque ese cliente debería permitir cambiar individualmente los settings regionales (Bueno, al menos yo no he encontrado nada acerca de como cambiarlos)
Responder Con Cita