Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2021
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
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:

Código Delphi [-]
qPedido.Edit;
qPedido.FieldByName('PRECIO').AsFloat:=0.123456;
qPedido.Post;

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!
Responder Con Cita
  #2  
Antiguo 31-05-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Prueba con Value en lugar de AsFloat.
Responder Con Cita
  #3  
Antiguo 31-05-2021
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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...
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 01-06-2021
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
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:

Código Delphi [-]
qPedido.Edit;
qPedido.FieldByName('PRECIO').Value:=0.123456;
qPedido.Post;

Muchas gracias, un saludo!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar Imagen de un TImage a un campo tipo image en sql server Mechita MS SQL Server 1 19-12-2013 09:34:33
Guardar un archivo PDF en un campo de MS SQL Server 2008 R2. TiammatMX OOP 1 14-03-2012 11:10:10
Guardar cualquier tipo de archivo en un campo en sql server zafmanjp MS SQL Server 7 21-12-2007 18:34:52
Como Reducir Decimales en Campo Float???? AGAG4 Firebird e Interbase 3 26-09-2005 15:27:07
Como guardar un Word en un campo SQL SERVER Investment MS SQL Server 1 03-05-2004 15:08:33


La franja horaria es GMT +2. Ahora son las 06:53:45.


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
Copyright 1996-2007 Club Delphi