DB2 - PUNTO DECIMAL EN DB2

 
Vista:

PUNTO DECIMAL EN DB2

Publicado por ELADIOVI (1 intervención) el 02/07/2004 14:33:42
Quisiera saber cómo configurar el punto decimal en un servidor DB2 v8 para que los campos decimales aparecieran según el modelo:
100.000.000,00
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PUNTO DECIMAL EN DB2. Hay que dejar DB2?

Publicado por Rolando Celedón (1 intervención) el 25/07/2010 00:50:53
Hola a todos,

Disculpen si la anotación al final suena muy fuerte y más viniendo de alguién que llega por primera vez a este foro; pero, estoy desesperado por culpa del mismo problema, y más al ver que en este foro especializado no hay respuesta para un problema detectado desde el 2004 !!!.

Ahora, para ser honesto, creo que en mi caso el principal culpable es el driver dbExpress que uso; pero, no puedo cambiar la tecnología dbExpress, así que me tocaría sacrificar DB2, algo que no quiero hacer porque es mejor base de datos que la alternativa que tengo.

Para que entiendan mi problema les explico un poco :

Tengo desarrollada una aplicación muy grande. Al momento de pasar a productivo, decidimos usar db2. Migrar a db2, por la metodología que uso, fué cuestión de minutos, Todo parecía estar bien hasta que nos fijamos con más cuidado en los valores numéricos. Todos los que estaban definidos como DECIMAL(18,2) estaban errados.

Tras algunas pruebas, encontramos que al momento de grabar estos datos, DB2 los recibe bien; es decir, almacena los valores correctos (Desde Centro de Control se ven bien, y también vía terminal en el servidor). Sin embargo, el driver dbExpress los lee mal. Por alguna razón, en lugar de leerlos en un formato nativo BCD, parece leerlos usando la representación en caracteres como intermediario; luego, al no coincidir la representación del servidor con la del cliente, no se entienden. Por ejemplo, el valor 10.08 llega como 1008 ; pero, si coloco 1008 también llega como 1008.

En este punto, pensamos que el problema era de facil solución: hacer coincidir los separadores decimales; pero, después de una semana de busqueda en google y numerosas pruebas, nada ha funcionado. Ese problema aparece reportado por muchas partes y se sugieren diversas soluciones; pero, nada de una solución definitiva, y las que hemos encontrado a lo sumo han trabajado parcialmente.

En mi caso, dado que necesito la precisión de 18 dígitos, no puedo cambiar esos campos.Son muchísimos; demasiados para intentar nada por programación; es decir, imposible cambiar la tecnología dbExpress. Por eso es que digo que estoy a un paso de verme forzado a abandonar DB2.

EXplicar todo lo que hemos intentado es demasiado largo; pero, como referencia les comento lo siguiente :

El servidor es db2 9.7 sobre Linux CentOS. El cliente está escrito en Delphi 2007 usando tecnología dbExpress (librería dbxdb230.dll), sobre Windows de 32 bits, para conectarse al cliente DB2 (db2cli.dll) .

En el cliente Windows, el Decimal Separator de configuración de db2 en dbExpress está ajustado a "." (punto); así como la configuración regional. En Linux, aunque la hemos ajustado con comandos locale, y toma el cambio a nivel Linux, el Db2 no se dá por enterado. Incluso hemos intentado crear una base de datos nueva cambiando de ES a US y ni así el db2, a nivel servidor, deja de usar la coma como separador. Bueno, hay mucho más; pero, la nota ya es demasiado larga.

Agradecería muchísimo si alguién que haya lidiado con este problema pudiera ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar