Delphi 5.0
Win98 SE
Interbase
Cree una funcion en un DLL para que actualice un dato de una tabla en especifico, regresa verdadera si este fue modificado, para esto agregue un TDataModule para poner ahi el componente TIBDatabase, TIBTransaction, TIBQuery.
El problemas es que cuando uso el DLL en la aplicación que deseo, me regresa la función como verdadera, sin embargo no modifica el dato.
Probe los mismo con una Tform en vez del TDataModule, y con este si funciona, es decir, me regresa la funcion como verdadera y ademas actualiza el campo de la tabla.
Cual es el problema???
Código Delphi
[-]
library ActualizaW32;
uses
SysUtils,
Classes,
UdtamdlDatos in 'UdtamdlDatos.pas' ;
{$R *.RES}
Function ActualizaTabla(Id_Buscar, Id_Campo, Campo_Valor : PChar) : Boolean; StdCall;
Begin
dtamdlDatos := TdtamdlDatos.Create(Nil);
With dtamdlDatos Do
Begin
Try
ibqryContactos.Close;
ibqryContactos.SQL.Clear;
ibqryContactos.SQL.Add('Update Cliente');
ibqryContactos.SQL.Add('Set ' + Id_Campo + ' = :PValor');
ibqryContactos.SQL.Add('Where Id_Empresa = ' + QuotedStr(Id_Buscar));
ibqryContactos.Params[0].AsString := StrPas(Campo_Valor);
ibqryContactos.ExecSQL;
Result := True;
Except
Result := False;
End;
End;
End;
Exports
ActualizaTabla;
begin
end.
Código de la aplicacion
Código Delphi
[-]
If ActualizaTabla(PChar(Edit1.Text), PChar('email'), PChar(DBEdit15.Text)) Then
ShowMessage('True')
Else
ShowMessage('False');
Espero haberme explicado
Gracias por su atención