Page 1 of 1

¿Error de Tdolphin con decimales MySql?

PostPosted: Sun Jun 06, 2021 2:01 am
by JoseAlvarez
hola a todos y un gran saludo.

Tengo el siguiente caso:

Debo manejar numeros de 13 enteros con 8 decimales en una tabla MariaDB.

Hasta ahi todo bien como se ve en la siguiente figura:

Image

El problema se presenta al hacer el query. Siempre retorna el valor del campo con solo 3 decimales y los redondea, como se puede ver aca:

Image

¿Le ha pasado a alguien algo parecido? ¿Alguna sugerencia para solventar?

Tdolphin + FW17.01 +xHarbour + BCC7 + Pelles c (como editor de recursos)

Quedo Atento a sus gentiles respuestas

Re: ¿Error de Tdolphin con decimales MySql? SOLUCIONADO

PostPosted: Mon Jun 07, 2021 10:30 pm
by JoseAlvarez
Saludos estimados amigos del foro.

Investigando y probando sobre el problema planteado sobre decimales, me encuentro que el mismo al parecer es heredado del viejo CLIPPER donde la precision con decimales se pierde cuando la variable numerica excede su maximo que segun lo leido es de 19 digitos.

Pense en un principio que era problema de la TDOLPHIN pero en las pruebas que hice en variables de memoria, el resultado fue el mismo, por lo que comprobe que nada tiene que ver la clase.

Muchas gracias a todo los que leyeron mi pregunta con la mejor intencion de ayudar.

Tenia entendido que con Harbour / xHarbour este tipo de limitaciones ya no existian, pero por lo menos en este caso, creo que aun esta alli.

Un abrazo amigos.

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Mon Jun 07, 2021 10:31 pm
by JoseAlvarez
Image

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 11:05 am
by cmsoft
Jose, muchas gracias por la info. No lo sabía a esto.

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 11:24 am
by cnavarro
Jose, entiendo que has utilizado en tus pruebas
Code: Select all  Expand view

SET DECIMALS TO 8
 

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 1:42 pm
by JoseAlvarez
Hola César y Cristobal.

¿cómo están?

César, yo tampoco lo sabia, me costó 3 dias averiguarlo, :lol:

Cristóbal, si, por supuesto, tengo en el main.prg

Set Fixed On
Set Decimals to 8

Hice todas las pruebas que pude, ya que pensaba que era problema de la tDolhin que no me regresaba los valores correctos. Cuando se me ocurrió probar con valores de memoria fue que vi que el problema era de xBase.

Lo bueno es que aprendimos algo y quedará la pregunta para los creadores de xHarbour sobre esta limitación.

Gracias a ambos por su feed back.

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 3:23 pm
by karinha
Buenos días José, cuando el campo numérico es demasiado grande, debes usar un campo TEXTO, para almacenar los números y usar VAL () para transformar el campo de texto que contiene los números en números. Yo lo uso así. Abrazos.

Saludos.

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 7:01 pm
by JoseAlvarez
Hola joao saludos.

Tambien intenté de esa manera, pero a nivel de menoria igual se trunca la precision decimal.

En el caso que me ocupa necesito trabajar con numeros de 13 enteros y 8 decimales y no se puede almacenar un dato asi en memoria.

Por lo menos yo no pude. Si alguien prueba y consigue la solución sería bueno que compartiera.

Yo lo mas que pude manejar fue 8 enteros y 8 decimales. Si agrego un entero mas, se pierde la precision decimal.

Gracias por el feed back

Re: ¿Error de Tdolphin con decimales MySql?

PostPosted: Tue Jun 08, 2021 7:42 pm
by cmsoft
Tal cual indica Jose, yo hice las mismas pruebas y obtuve lo mismo
Usando un
Code: Select all  Expand view

SELECT FORMAT(micampo, 8) as campo_formateado ,micampo FROM mitabla
 

Y luego haciendo xbrowse(oQry) obtento en el campo campo_formateado bien el numero con toda la precisión decimal (en formato texto) y no asi en micampo (el campo definido como DECIMAL 21,8 y tambien probé con float y double).
Claramente es una limitación de harbour