PDA

Ver la Versión Completa : error configurando manualmente ADO.net


camomilass
10-01-2007, 14:42:17
Hola a todos estoy haciendo un programa en Delphi. net y conecto a bases de datos de Paradox mediante adoconnections y TADOTables.
La Historia es que quiero configurar la propiedad "connectionstring" de los adoconnections por codigo, hasta ahi ningun problema. Configuro uno, dos, , tres y cuatro perfectamente cuando configuro el quinto y ejecuto e lprograma al llegar a la parte del codigo donde configuro el primer connectionstring y conecto la ADoconnection me sale este error:
"[Microsoft][Controlador ODBC Paradox] Valor en la clave Excel de sección Engines no Válido del Registro de Windows"
Bien, pues si cojo cualquiera de los cinco y lo connecto mediante el asistente y dejo los otros 4 conectados por codigo el programa funciona correctamente pero configuro el 5 por codigo y cuando al ejecutar se llega a la linea donde esta el primer adoconnection conctandose sale este error.
El código es este:

{AHORA RED Y TABLAS DE RED}

DM.RED.ConnectionTimeout:=15;
DM.RED.Provider:='MSDASQL.1';
DM.RED.DefaultDatabase:=ruta+'BDRED';
DM.RED.CursorLocation:=clUseClient;
DM.RED.Mode:=cmReadWrite;
DM.RED.ConnectionString:='DBQ='+ruta+'BDRED;Driver={Microsoft Paradox Driver (*.db )};DriverId=282;FIL=Paradox 4.X;MaxBufferSize=2048;MaxScanRows=8;ParadoxNetPath=C:\WINDOWS\system32;ParadoxNetStyle=4.x;Threads= 3;UserCommitSync=Yes;"';
DM.RED.Connected:=TRUE;
DM.DATOSPER.Open;
DM.TRMIENT.Open;
{AHORA TABLAS DE PRIVA}

DM.PRIVA.ConnectionTimeout:=15;
DM.PRIVA.Provider:='MSDASQL.1';
DM.PRIVA.DefaultDatabase:=directorio+'PRIVADO';
DM.PRIVA.CursorLocation:=clUseClient;
DM.PRIVA.Mode:=cmReadWrite;
DM.PRIVA.ConnectionString:='DBQ='+directorio+'PRIVADO;Driver={Microsoft Paradox Driver (*.db )};DriverId=282;FIL=Paradox 3.X;MaxBufferSize=2048;MaxScanRows=8;ParadoxNetPath=C:\WINDOWS\system32;ParadoxNetStyle=3.x;Threads= 3;UserCommitSync=Yes;"';
DM.PRIVA.Connected:=TRUE;
DM.RECETMP.Open;
DM.NOTAREC.Open;

{PRIMERO RECEP Y TABLAS DE RECEP}
DM.RECEP.ConnectionTimeout:=15;
DM.RECEP.Provider:='MSDASQL.1';
DM.RECEP.DefaultDatabase:=ruta+'BDRECEPC';
DM.RECEP.CursorLocation:=clUseClient;
DM.RECEP.Mode:=cmReadWrite;
DM.RECEP.ConnectionString:='DBQ='+ruta+'BDRECEPC;Driver={Microsoft Paradox Driver (*.db )};DriverId=282;FIL=Paradox 4.X;MaxBufferSize=2048;MaxScanRows=8;ParadoxNetPath=C:\WINDOWS\system32;ParadoxNetStyle=4.x;Threads= 3;UserCommitSync=Yes;"';
DM.RECEP.Connected:=true;
DM.MEDICATS.Open;
DM.DOCTORES.Open;
DM.RECETAS.Open;
DM.QMEDICATS.Open;
DM.QDOCTORES.Open;
DM.FORMULARIO.Open;
DM.CLINIDAT.Open;
DM.JUSTIFICANTES.Open;

{AHORA HISTORIC Y TABLAS DE HISTORIC}

DM.HIST.ConnectionTimeout:=15;
DM.HIST.Provider:='MSDASQL.1';
DM.HIST.DefaultDatabase:=ruta+'HISTORIC';
DM.HIST.CursorLocation:=clUseClient;
DM.HIST.Mode:=cmReadWrite;
DM.HIST.ConnectionString:='DBQ='+ruta+'HISTORIC;Driver={Microsoft Paradox Driver (*.db )};DriverId=282;FIL=Paradox 4.X;MaxBufferSize=2048;MaxScanRows=8;ParadoxNetPath=C:\WINDOWS\system32;ParadoxNetStyle=4.x;Threads= 3;UserCommitSync=Yes;"';
DM.HIST.Connected:=TRUE;
DM.MODELOREC1.Open;
DM.MODELOREC2.Open;
DM.HISTREC1.Open;
DM.HISTREC2.Open;
DM.QMODELOREC1.Open;
{AHORA FIGAB Y TABLAS DE FIGAB}

DM.FIGAB.ConnectionTimeout:=15;
DM.FIGAB.Provider:='MSDASQL.1';
DM.FIGAB.DefaultDatabase:=directorio+'TABFIGAB';
DM.FIGAB.CursorLocation:=clUseClient;
DM.FIGAB.Mode:=cmReadWrite;
DM.FIGAB.ConnectionString:='DBQ='+directorio+'TABFIGAB;Driver={Microsoft Paradox Driver (*.db )};DriverId=282;FIL=Paradox 4.X;MaxBufferSize=2048;MaxScanRows=8;ParadoxNetPath=C:\WINDOWS\system32;ParadoxNetStyle=4.x;Threads= 3;UserCommitSync=Yes;"';
DM.FIGAB.Connected:=TRUE;
DM.QUEES.Open;

DM es el Data Module
RECEP,RED,HIST,FIGAB, Y PRIVA son los adoconnections.
y lo demas son los ADOtables QUEES,HISTREC...

Aver si alguien puede sacarme de esta por que me estoy volviendo loco,
gracias chicos.

camomilass
10-01-2007, 20:10:44
Increible pero cierto ya he encontrado una solución aunque no me lo explico.
Tiene que haber un adoconnection conectado, esté donde esté, le pones manualmente con el asistente el driver odbc,...etc y el directorio donde se encuentra la base de datos (por ejemplo C:\, que excepto raros casos siempre hay un C:\en un equipo) y a rular.
No sé porqué se produce este hecho pero en fin me vale la solución.:):eek::eek:

Gracias de todas formas.