Fórum Query em tempo de execução no Delphi #612902
26/09/2020
0
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
Curtir tópico
+ 0
Responder
Post mais votado
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;Emerson Nascimento
Responder
Gostei + 2
Mais Posts
06/11/2020
André Santos
Olá Emerson Nascimento, muito obrigado pela resposta.
Consegui resolver utilizando sua dica. Obrigado!
Consegui resolver utilizando sua dica. Obrigado!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)