Query em tempo de execução no Delphi

Delphi

Firebird

26/09/2020

Olá a todos.
Criei um procedimento para verificar se um usuário está cadastrado no banco de dados.
Utilizo Firebird como BD e componentes Zeos para acessar o banco.
Resolvi criar uma query em tempo de execução para fazer a verificação. Não dá nenhum erro, porém, quando digito o nome do usuário no Edit e clico
no botão que executa o procedimento, Ele dá ''usuário inexistente'', mesmo se o nome do usuário estiver cadastrado no banco.

Segue o código:

procedure Tfrm_login.SpeedButton1Click(Sender: TObject);
var Qry : TZQuery;
begin
Qry:=TZQuery.Create(nil);
Qry.Connection := dm_dados.ZConnection1; //componente de conexão
Qry.SQL.Add(''select codigo, nome, acessar, user, pass from clientes'');
Qry.Open;
if Qry.Locate(''USER'',Edit1.Text,[]) then
begin
ShowMessage(''usuário cadastrado'');
end
else
begin
ShowMessage(''usuário inexistente'');
Edit1.SetFocus;
end;
FreeAndNil(Qry);
end;

Desde já agradeço a quem puder ajudar.
André Santos

André Santos

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

28/09/2020

altere o procedimento. não faz sentido listar todos os registros pra depois fazer a busca.
faça o filtro diretamente na query.
procedure Tfrm_login.SpeedButton1Click(Sender: TObject);
var
	Qry: TZQuery;
begin
	Qry := TZQuery.Create(nil);
	Qry.Connection := dm_dados.ZConnection1; //componente de conexão
	Qry.SQL.Text := 'select user from clientes where UPPER(user) = '+QuotedStr(AnsiUpperCase(Edit1.Text));
	Qry.Open;
	if Qry.EOF then
	begin
		ShowMessage('usuário inexistente');
		Edit1.SetFocus;
	end
	else
		ShowMessage('usuário cadastrado')
	FreeAndNil(Qry);
end;
GOSTEI 2

Mais Respostas

André Santos

André Santos

26/09/2020

Olá Emerson Nascimento, muito obrigado pela resposta.
Consegui resolver utilizando sua dica. Obrigado!
GOSTEI 0
POSTAR