Ver Mensaje Individual
  #12  
Antiguo 29-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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
    //Pantalla Inicial
    frmSplash := TfrmSplash.Create(nil);
    frmSplash.Show;
    frmSplash.Update;

    //Crear el DataModulo
    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;

    //Crear la Forma
    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.
Responder Con Cita