Query em tempo de execução no Delphi
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.
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
Curtidas 0
Melhor post
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.
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
26/09/2020
Olá Emerson Nascimento, muito obrigado pela resposta.
Consegui resolver utilizando sua dica. Obrigado!
Consegui resolver utilizando sua dica. Obrigado!
GOSTEI 0