 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kobe Invitado
|
Publicado: Mar 28 Jun, 2005 1:55 pm Asunto: Problemas de lectura (BD - Access) |
|
|
Hola. Tengo una tabla en una BD MSAccess definida de la siguiente manera:
- ID (autonumérico)
- X (decimal, con precisión=2 y escala=0)
Esto me permite tener un registro en la tabla tal como éste:
(ID = 1, X = -1)
Bien, el caso es que cuando accedo a través de componentes ADO y leo este registro me dice que la X vale 1!! (y no -1), mientras que si lo hago con componentes TDatabase me va bien.
A través de ADO
===========
Tengo un TADOConnection y un TADOQuery.
El código que utilizo para la lectura es el siguiente:
| Código: |
AnsiString connectionString;
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\\Mis Documentos\\DBSamples\\prueba.mdb";
ADOConnection1->ConnectionString = connectionString;
ADOConnection1->Open();
ADOQuery1->Connection = ADOConnection1;
ADOQuery1->SQL->Add("SELECT X FROM PRUEBA");
ADOQuery1->Open();
ADOQuery1->First();
AnsiString a = ADOQuery1->FieldByName("X")->AsString;
|
Y con todo esto el valor de a vale "1".
A través de TDatabase
================
Tengo un TDatabase y un TQuery.
El código que utilizo para la lectura es el siguiente:
| Código: |
CreateODBCAlias("valeron", "PRUEBA.mdb", "E:\\Mis Documentos\\DBSamples", "Mucha mucha suerte");
Database1->DatabaseName = "valeron";
Query1->SQL->Clear();
Query1->SQL->Add("SELECT X FROM PRUEBA");
Query1->DatabaseName = "valeron";
Query1->Active = true;
Query1->First();
AnsiString a = Query1->FieldByName("X")->AsString;
RemoveODBCAlias("valeron");
|
Y con todo esto el valor de a vale "-1".
* Las funciones CreateODBCAlias y RemoveODBCAlias las copié de algún post de este foro y funcionan bien.
* He probado con muchísimos cambios: todas las posibilidades de AsFloat, AsInteger, AsString, etc., cambiando el connectionstring que uso con ADO, etc. pero siempre funciona mal.
Lo que necesito es hacer que esto funcione con ADO porque tengo una aplicación muy grande escrita con componentes ADO y no voy a cambiarlo todo.
Si alguien puede ayudarme lo agradezco mucho.
Un saludo para todos y que no se pierda nunca la ilusión por programar!!  |
|
| Volver arriba |
|
 |
shackletta Lt JG

Registrado: 01 Dic 2004Mensajes: 68
|
Publicado: Jue 30 Jun, 2005 12:59 pm Asunto: |
|
|
No sé si será por esto, pero si el campo X es un decimal (float) en tu tabla de la BD Access en lugar de acceder al valor mediante AsString podrías probar accediendo mediante AsFloat. De todos modos te aconsejo que cuando utilices decimales en Access en lugar de poner el campo con formato float lo pongas con double. Así he evitado muchos problemas de cálculo. Sea double o float desde builder se accede con AsFloat.
Lo dicho, sólo es una sugerencia.
Un saludo. |
|
| Volver arriba |
|
 |
kobe Invitado
|
Publicado: Lun 11 Jul, 2005 11:48 am Asunto: |
|
|
| Gracias por el interés shackletta, pero como ponía en la última parte de mi post ya he probado con prácticamente todas las posibilidades de AsFloat, AsString, etc. y no funciona. |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 12 Jul, 2005 11:06 am Asunto: |
|
|
| Lo siento, pero lo leí demasiado rápido tu post y no me fijé en la parte que ponías que habías probado con todo. De todas maneras, has probado a poner en Access ese campo como Doble en lugar de Simple?? |
|
| Volver arriba |
|
 |
shackletta Lt JG

Registrado: 01 Dic 2004Mensajes: 68
|
Publicado: Mar 12 Jul, 2005 11:07 am Asunto: |
|
|
Vale, era yo, es que estoy en la universidad y he olvidado identificarme.
Un saludo y suerte |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|