Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2010
ricardo_soria ricardo_soria is offline
Registrado
 
Registrado: mar 2007
Posts: 5
Poder: 0
ricardo_soria Va por buen camino
Problemas con Base de Datos Access y cálculos con decimales

Estimados Amigos,

Agradeceré mucho a quien me pueda orientar sobre la forma de resolver este problema con conexión a bases de datos...

Me conecto a una base de datos sencilla en Access, a través de un componente ADOConnection (no uso nada de ODBC ni otras cosas). Me conecto a una tabla a través de de un ADOTable, luego conecto a esta mediante un DataSource, y finalmente, despliego los datos de la tabla en un DBGrid. Hasta aquí todo bien. El problema viene debido a que en la tabla existe un campo 'valor' en donde deben guardarse cantidades monetarias. Originalmente en la base de datos este campo era de tipo 'Moneda', y en mi aplicación en Delphi debo hacer cierto cálculo para establecer el valor que debe guardarse en este campo, lo que hago de la siguiente manera:

Código:
ADOTable1.FieldValues['valor']:=Ceil(minutos(FieldValues['inicio'], FieldValues['fin'])/6)*0.1;
La función 'minutos' devuelve un resultado integer. Este valor se divide para 6, y se aplica la función Ceil, cuyo resultado sigue siendo integer. Finalmente, se multiplica este valor por 0.1, con lo cual ya pasa a ser decimal. Pero en el momento en que se realiza el Post, en el DBGrid aparece "BCD Overflow" en lugar del valor calculado que debería aparecer. Curiosamente, en la base de datos si se guarda el valor calculado. Pero en el DBGrid en mi aplicación, siempre sigue apareciendo el "BCD Overflow". Incluso en tiempo de diseño, se puede ver el valor correcto en el DBGrid, pero al ejecutar la aplicación no.

He buscado mucho sobre este problema, pero no he encontrado nada que realmente me haya ayudado a resolverlo. He probado cambiando el campo en la Base de datos de 'Moneda' a 'Número', de tipo 'Simple', con 2 lugares decimales (en Access), en cuyo caso, se almacena por ejemplo el valor 0.100000001490116, cuando lo correcto sería simplemente 0.10, no tengo idea por qué se altera ese valor, y lógicamente, necesito que se guarde el valor exacto. Además, por compatibilidad con versiones anteriores de esta Base de datos, preferiría enfáticamente que el campo siga siendo tipo 'Moneda'.

De antemano, muchas gracias por tomarse la molestia de leer todo este detalle del problema, y quedaré muy agradecido por sus respuestas.

Saludos,
Responder Con Cita
 



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 Base datos numeros 2 decimales VRO Varios 9 11-11-2010 00:31:30
Problemas con smarty al tratar consulta de base de datos access Chompiras PHP 3 20-01-2008 20:00:57
base de datos access en Red Nbull Conexión con bases de datos 5 13-01-2006 12:31:49
Problemas con Tquery y base de Access!!! JELIRM SQL 3 21-07-2005 23:21:39
Problemas al conectar una tabla ADO a una base de datos de Access que posee contraseñ Roger_Fernandez Conexión con bases de datos 5 28-02-2005 16:46:29


La franja horaria es GMT +2. Ahora son las 02:59:38.


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