Jump to content
andreluis78

Query em tempo de execução

Recommended Posts

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;

 

Se alguém puder ajudar agradeço desde já.

Obrigado

Share this post


Link to post
Share on other sites

Olá!

 

Refatorando seu código:

 

procedure Tfrm_login.SpeedButton1Click(Sender: TObject);
var Qry : TZQuery;
begin
  try
    Qry            := TZQuery.Create(nil);
    Qry.Connection := dm_dados.ZConnection1;  //componente de conexão
    Qry.Close;
    Qry.SQL.Clear;
    Qry.Params.Clear;
    Qry.SQL.Add('select codigo, nome, acessar, user, pass from clientes where Lower( user ) = :user');
    Qry.Params[0].AsString := LowerCase( Edit1.Text )
    Qry.Open;
    //
    if Qry.RecordCount > 0 then
    begin
      ShowMessage('usuário cadastrado');
    end
    else
    begin
      ShowMessage('usuário inexistente');
      Edit1.SetFocus;
    end;
  finally    
    FreeAndNil(Qry);
  end;  
end;

O método locate não seria o mais recomendado para essa finalidade.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • By tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • By Kefatif
      Prezados, bom dia.
       
      Utilizo as linguagens: php, html e banco de dados mysql.
       
      Tenho uma tabela que deveria trazer todos os registros localizados no banco de dados, porém me traz apenas um.
       
      Quando rodo a Query sozinha direto no banco ela me traz todos os registros, mas ao incluir no código php/html me traz apenas o primeiro registro, segue o código abaixo:
       
      $sqlnominal = "SELECT A.CNES, C.NOME_UNIDADE, A.NOME_PACIENTE, A.CPF, A.CNS, A.DATA_NASC, B.DATA_DISPENSACAO, B.CANETA_NPH, B.CANETA_REGULAR FROM insulino_cadastro A INNER JOIN insulino_dispensacao B ON A.ID_PACIENTE = B.ID_PACIENTE INNER JOIN unidades C ON A.CNES = C.CNES and (B.CANETA_NPH != '' or B.CANETA_REGULAR != '')"; $resultnominal = mysqli_query($con, $sqlnominal); $rownominal = mysqli_fetch_array($resultnominal); ?> <table class="table table-hover table-bordered" id="tabela-dispensacao2" style="margin-top:0.2%"> <tr> <th>UNIDADE</th> <th>PACIENTE</th> <th>CPF</th> <th>CNS</th> <th>DATA DE<br>NASCIMENTO</th> <th>RETIRADA</th> <th>CANETA NPH</th> <th>CANETA REGULAR</th> </tr> <td><?php echo $rownominal["CNES"]?></td> <td><?php echo $rownominal["NOME_PACIENTE"]?></td> <td><?php echo $rownominal["CPF"]?></td> <td><?php echo $rownominal["CNS"]?></td> <td><?php echo dataTela($rownominal["DATA_NASC"]); ?></td> <td><?php echo dataTela($rownominal["DATA_DISPENSACAO"]); ?></td> <td><?php echo $rownominal["CANETA_NPH"]?></td> <td><?php echo $rownominal["CANETA_REGULAR"]?></td> </tr> </table> <?php }else{ echo "Nenhum registro encontrado!"; }  
      Agradeço desde  já pela ajuda.
       
      Obrigado!
    • By Kefatif
      Prezados, boa tarde.
       
      Utilizo um banco de dados Mysql + Programação PHP e HTML.
       
      Preciso que no filtro do sql ele não me traga o estoque do CNES "0000000", como eu poderia ta excluindo ele do filtro?
       
       
      $sqlestoque = "select A.ID_ESTOQUE, D.CNES, D.NOME_UNIDADE, B.COBERTURA, A.QTD, C.DATA_REGISTRO FROM lesao_rel_estoque_coberturas A INNER JOIN lesao_coberturas B ON A.ID_COBERTURA = B.ID_COBERTURA INNER JOIN lesao_estoque C ON A.ID_ESTOQUE = C.ID_ESTOQUE INNER JOIN unidades D ON C.CNES = D.CNES WHERE C.ID_ESTOQUE = (SELECT MAX(E.ID_ESTOQUE) FROM lesao_estoque E WHERE E.CNES = C.CNES) ORDER BY A.ID_ESTOQUE DESC";  
      Agradeço a ajuda desde já.
       
      Muito obrigado!
    • By Kefatif
      Prezados, boa tarde.
       
      No meu banco de dados tenho registro de estoque de alguns produtos e suas respectivas unidades.
       
      Eu gostaria que a query só trouxesse o último registro dos produtos daquela unidade.
       
      Utilizo Mysql como banco de dados.
       
      Segue minha Query abaixo:
       
      SELECT A.ID_ESTOQUE, D.CNES, D.NOME_UNIDADE, B.COBERTURA, A.QTD, C.DATA_REGISTRO FROM lesao_rel_estoque_coberturas A INNER JOIN lesao_coberturas B ON A.ID_COBERTURA = B.ID_COBERTURA INNER JOIN lesao_estoque C ON A.ID_ESTOQUE = C.ID_ESTOQUE INNER JOIN unidades D ON C.CNES = D.CNES ORDER BY A.ID_ESTOQUE  
      Agradeço a todos desde já pela ajuda. 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.