cd.rafael,
Cita:
Empezado por cd.rafael
La idea de la librería es proporcionar una forma que me permita manejar las operaciones básicas en una tabla cualquiera (insertar, modificar, eliminar, imprimir y exportar). De esta manera evito tener una forma para cada tabla (aclarando que son tablas básicas, de referencia), ya que puedo enviarle a la dll cualquier tabla sin necesidad de generar código específico para cada tabla.
|
Cita:
Empezado por cd.rafael
Cuando se lanza por primera vez la dll, la cual maneja los datos de una tabla X, funciona perfectamente. Cuando se llama la dll por segunda vez para manejar los datos de la tabla Y, sin haber terminado la primera llamada, la primera instancia que estaba manejando la tabla X, adopta los datos de la tabla Y que se maneja en la segunda instancia.
|
Cita:
Empezado por cd.rafael
...el problema de los datos cuando se inician dos instancias de la dll continúa. Las variables que uso para el llamado no son globales, son idnependientes para cada llamada a la dll.
|
Elimina esta declaración de la unidad DConexion:
Código Delphi
[-]
var
dtmConexion : TDataModule;
Modifica la
DLL forma en lo referente al
Data Modulo dtmConexion:
Código Delphi
[-]
procedure pFormaMaestro(pStUsuario: String; pStPassword: String; pStDB: String; pStEsquema: String; pStTabla: String);
var
dtmConexion : TDataModule;
begin
frmSplash := TfrmSplash.Create(nil);
frmSplash.Show;
frmSplash.Update;
dtmConexion := TdtmConexion.Create(Application);
dtmConexion.gStTabla := pStTabla;
dtmConexion.gStUsuario := pStUsuario;
dtmConexion.gStPassword := pStPassword;
dtmConexion.gStDB := pStDB;
dtmConexion.gStEsquema := pStEsquema;
dtmConexion.pInicioDatos;
frmSplash.Hide;
frmSplash.Free;
if (dtmConexion.gBlSelect) then
begin
try
frmPrincipal := TfrmPrincipal.Create(nil);
frmPrincipal.ShowModal;
dtmConexion.cdsPrincipal.Close;
dtmConexion.qryPrincipal.Close;
dtmConexion.Free;
frmPrincipal.Hide;
frmPrincipal.Free;
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end;
end;
end;
La idea es que se cree
una nueva variable local del Data Modulo
dtmConexion y su instancia correspondiente en cada llamada del Procedimiento
pFormaMaestro y que esta libere todos su recursos al finalizar el procedimiento mencionado para de esta forma asegurar que las
instancias sean independientes entre llamadas.
Espero sea útil
Nelson.