Hola.
Es que no termino de entender la lógica de tu código, pensé que ingresabas usuario y contraseña mediante los DBEdit, pero aparentemente seleccionas el usuario desde el DBLookupComboBox...
Estoy suponiendo que la función
LoginAccepted altera la cadena SQL original del IBQuery que alimenta el DBLookupComboBox (si no estoy apreciando equívocamente como funciona).
Para evitar esa situación cambia la función anterior por esta que crea una consulta temporal para verificar la contraseña:
Código Delphi
[-]
function TDataModule1.LoginAccepted(const nam, pwd: string): Boolean;
var
qy: TIBQuery;
begin
qy := TIBQuery.Create(nil);
try
qy.Database := IBDataBase1;
qy.Transaction := IBTransaction1;
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;
finally
qy.Free;
end;
end;
Y también tendrás que cambiar los argumentos al llamar al método
LoginAccepted,
Código Delphi
[-]
procedure TLogin.btnAceptarClick(Sender: TObject);
begin
if not DataModule1.LoginAccepted(DBLookupComboBox1.Text, EditPassword.Text) then
raise Exception.Create('El usuario o la contraseña son inválidos.');
end;
ya que ahora el nombre de usuario se toma desde el DBLookupComboBox.
Saludos