leyendo el articulo paradox en red, me dice que debo crear un datamodule, un database y un sesion, ok mi duda es la siguiente, tengo necesidad del datamodule, y los otros dos componentestengo que crearlos en cada una de las ventanas del sistema, yo manejo un procedimiento que es el que utilizo para abrir las tablas, o sea todas las tablas del sistema las abro utilizando este:
Código:
function TobRutinas.AbrirTablas(T: tTable; NT, Indices: String): Boolean;
var
ErrorCode: DBIResult;
begin
//Abre las Tablas
if fileexists(cRutaDatos + '\' + NT + '.db') then
begin
try
Result := True;
T.Exclusive := False;
if T.Active then
Exit;
T.DatabaseName := cRutaDatos;
T.TableName := NT;
T.IndexName := Indices;
T.Active := True;
except
on E: EDBEngineError do
begin
ErrorCode := E.Errors[0].ErrorCode;
case ErrorCode of
DBIERR_SYSFILEOPEN,
DBIERR_SYSFILEIO,
DBIERR_SYSCORRUPT,
DBIERR_NOCONFIGFILE,
DBIERR_CFGCANNOTWRITE,
DBIERR_CFGMULTIFILE,
DBIERR_REENTERED,
DBIERR_CANTFINDIDAPI,
DBIERR_CANTLOADIDAPI,
DBIERR_CANTLOADLIBRARY,
DBIERR_TEMPFILEERR,
DBIERR_MULTIPLEIDAPI,
DBIERR_SHAREDMEMCONFLICT:
msgError( msErrorSistema + NT );
DBIERR_LOCKED,
DBIERR_UNLOCKFAILED,
DBIERR_FILEBUSY,
DBIERR_DIRBUSY,
DBIERR_FILELOCKED,
DBIERR_DIRLOCKED,
DBIERR_ALREADYLOCKED,
DBIERR_NOTLOCKED,
DBIERR_LOCKTIMEOUT,
DBIERR_GROUPLOCKED,
DBIERR_LOSTTBLLOCK,
DBIERR_LOSTEXCLACCESS,
DBIERR_NEEDEXCLACCESS,
DBIERR_RECGROUPCONFLICT,
DBIERR_DEADLOCK,
DBIERR_ACTIVETRAN,
DBIERR_NOACTIVETRAN,
DBIERR_RECLOCKFAILED,
DBIERR_OPTRECLOCKFAILED,
DBIERR_OPTRECLOCKRECDEL,
DBIERR_ENLISTFAILED,
DBIERR_NETFILELOCKED,
DBIERR_NETMULTIPLE:
msgError( msTablaBloqueada + NT );
DBIERR_FILECORRUPT: msgError(msTablaCorrupta + NT);
DBIERR_INDEXCORRUPT: msgError(msIndiceCorrupto +NT);
DBIERR_READERR: msgError(msErrordeLectura +NT);
DBIERR_DIRNOACCESS: msgError(msSinAccesoaDirectorio + NT);
DBIERR_FILENOACCESS: msgError(msSinAccesoaArchivo + NT);
DBIERR_NOMEMORY: msgError(msSinMemoria + NT);
DBIERR_OPENTBLLIMIT: msgError(msMuchasTablasAbiertas + NT);
DBIERR_NOSHAREDMEMORY: msgError(msSinMemoriaCompartida + NT);
DBIERR_INVALIDFILENAME: msgError(msNombreArchivoIncorrecto + NT);
DBIERR_NOSUCHINDEX: msgError(msNombreIndiceIncorrecto + NT);
else msgError(msErrorDesconocido + E.Message);
end;
Result := False;
end;
end;
end
else
begin
Result := False;
msgError(msTablanoExiste + cRutaDatos + '\' + NT);
end;
end;
alguien sabe como puedo crear el data module en ejecucion y los otro componentes cada vez que se llame a esta funcion???
cualquier sugerencia estaria agradecido