![]() |
Como guardar todos los decimales en campo decimal de SQL SERVER
Hola,
Tengo una base de datos en SQL SERVER, y un campo de tipo decimal (18,6) para guardar como máximo 6 decimales. El problema es que al guardar el valor en la base de datos sólo me guarda los 4 primeros decimales. Pongo el código donde me ocurre esto:
qPedido es un TADODataSet y después de guardar en la base de datos, el valor que hay guardado es 0.1234, perdiendo los dos últimos decimales. He leído por internet poner la propiedad EnableBCD:=False, pero obtengo el mismo resultado. ¿Sabéis por qué ocurre esto? Gracias! |
Prueba con Value en lugar de AsFloat.
|
No deberias usar floats en Delphi, ni cualquier otro lenguaje, en especial si haces cálculos monetarios.
Usa un tipo Decimal como: http://www.rvelthuis.de/programs/bigdecimals.html El punto es que los tipos de datos, idealmente, deben alinearse para ser compatibles o idénticos a travez de toda la ruta de la app (asi que si la BD dice Decimal, en Delphi es Decimal y viceversa). * Algo de explicación aqui: https://www.crockford.com/dec64.html. Considero que el uso de un tipo Decimal o Money es mandatorio para todos los casos de apps conclaculos de finanzas/monedas... |
Ok, muchas gracias por la información. Lo tendré en cuenta para futuros desarrollos.
Para arreglar este caso, he probado de asignarle el valor con Value, y ha funcionado correctamente:
Muchas gracias, un saludo! |
La franja horaria es GMT +2. Ahora son las 10:22:30. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi