Hola.
Claro, de allí el error.
Básicamente deberías tener algo similar a lo siguiente,
TDataModule:
Código Delphi
[-]
unit unit_name;
interface
uses
SysUtils, Classes, DB, IBCustomDataSet, IBDatabase, IBQuery;
type
TDataModule1 = class(TDataModule)
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
IBQPassword: TIBQuery;
private
public
function LoginAccepted(qy: TIBQuery; const nam, pwd: string): Boolean;
end;
var
DataModule1: TDataModule1;
implementation {$R *.dfm}
...
function TDataModule1.LoginAccepted(qy: TIBQuery; const nam, pwd: string): Boolean;
begin
qy.Close;
qy.SQL.Clear;
qy.SQL.Add('SELECT * FROM USUARIO');
qy.SQL.Add('WHERE NOMBRE = :NOMBRE');
qy.ParamByName('NOMBRE').AsString := nam;
qy.Open;
Result := not qy.IsEmpty and (qy.FieldByName('CLAVE').AsString = pwd);
qy.Close;
end;
...
end.
Formulario login:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TLogin = class()
...
EditUsuario: TEdit;
EditPassword: TEdit;
btnAceptar: TButton;
procedure btnAceptarClick(Sender: TObject);
private
public
end;
var
Login: TLogin;
implementation {$R *.dfm}
uses unit_name;
...
procedure TLogin.btnAceptarClick(Sender: TObject);
begin
if not DataModule1.LoginAccepted(DataModule1.IBQPassword, EditUsuario.Text, EditPassword.Text) then
raise Exception.Create('El usuario o la contraseña son inválidos.');
end;
...
end.
Saludos