Registro não encontrado!

10/08/2004

Pessoal, como faço para q numa consulta, ao não achar o nome da pessoa vir showmessage, registro não encontrado! meu código do botão está assim:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´SELECT Nome, Telefone FROM tb_profe´);
ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); /// olha aqui a alteração
ADOQuery1.Open;


tinha feito algo como:
if ADOQuery1.EOF then
blabla

mas não sei se está coerente isso, alguem pode me dar uma luz?

obrigado.


Rockbilly

Respostas

10/08/2004

Melo

Faz o Seguinte quando vc der o ´Open´ na tabela , verifica se ele estar vazio. caso de afirmativo de um showmessage.

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´SELECT Nome, Telefone FROM tb_profe´);
ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); /// olha aqui a alteração
ADOQuery1.Open;

// a Verificação se a Query esta vazia ou não
if ADOQuery1.isEmpty then
Showmessage(´A pesquisa não retornou nenhum Resultado´)

Espero Ter Ajudado
Melo


Responder Citar

11/08/2004

Rockbilly

brigado melo, vou tentar fazer isso!


Responder Citar

13/08/2004

Rockbilly

não deu certo, ele sempre dá ´Registro não encotrado!´, olhem meu código:
if not (ADOQuery1.IsEmpty) Then
  begin
   ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´);
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´);
   ADOQuery1.Open;
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;

  end
 else
  begin
   ShowMessage(´Registro não encontrado!´);
  end;
end;



e tb:
if not (ADOQuery1.EOF) Then
  begin
   ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´);
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´);
   ADOQuery1.Open;
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;

  end
 else
  begin
   ShowMessage(´Registro não encontrado!´);
  end;
end;



Responder Citar

13/08/2004

Rockbilly

desculpa, os códigos são esses:
if not (ADOQuery1.IsEmpty) Then 
  begin 
ADOQuery1.Close; 
   ADOQuery1.SQL.Clear; 
   ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); 
   ADOQuery1.Open; 
     end 
else 
  begin 
   ShowMessage(´Registro não encontrado!´); 
  end; 
end; 




e tb:
if not (ADOQuery1.EOF) Then 
  begin 
ADOQuery1.Close; 
   ADOQuery1.SQL.Clear; 
ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); 
   ADOQuery1.Open; 
   
  end 
else 
  begin 
   ShowMessage(´Registro não encontrado!´); 
  end; 
end; 



Responder Citar

13/08/2004

Macario

desculpa, os códigos são esses:
if not (ADOQuery1.IsEmpty) Then 
  begin 
ADOQuery1.Close; 
   ADOQuery1.SQL.Clear; 
   ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); 
   ADOQuery1.Open; 
     end 
else 
  begin 
   ShowMessage(´Registro não encontrado!´); 
  end; 
end; 
e tb:
if not (ADOQuery1.EOF) Then 
  begin 
ADOQuery1.Close; 
   ADOQuery1.SQL.Clear; 
ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
   ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); 
   ADOQuery1.Open; 
   
  end 
else 
  begin 
   ShowMessage(´Registro não encontrado!´); 
  end; 
end; 


Olá programador, boa tarde.

Primeiro voce executa a Query, e depois verifica o estado da mesma.

[color=red:3bcde6d36f] ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); ADOQuery1.SQL.Add(´WHERE Nome=´+´´´´+Edit1.Text+´´´´); ADOQuery1.Open; if ADOQuery1.isEmpty then ShowMessage(´Não há dados a exibir´);[/color:3bcde6d36f]



Responder Citar

13/08/2004

Rockbilly

Oi gente fina, vou testa isso e qq coisa posto... vlw a atenção!


Responder Citar

13/08/2004

Macario

Há uma dica pro seu código.

Tente assim:

[color=green:43e4c9dac0]
with ADOQuery1 do
  begin
    Close; 
    SQL.Clear; 
    SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
    SQL.Add(´WHERE Nome=´+QuotedStr(Edit1.Text); 
    Open; 
  end;

if ADOQuery1.isEmpty then 
ShowMessage(´Não há dados a exibir´);
[/color:43e4c9dac0]


ou assim:
[color=green:43e4c9dac0]
with ADOQuery1 do
  begin
    Close; 
    SQL.Clear; 
    SQL.Add(´SELECT Nome As NOMES, Telefone As FONE FROM tb_profe´); 
    SQL.Add(´WHERE Nome= :Codigo´); 
[color=red&93;    Params.ParamByName(´Codigo´).asString := edit1.text;&91;/color&93;
    Open; 
  end;

if ADOQuery1.isEmpty then 
ShowMessage(´Não há dados a exibir´);
[/color:43e4c9dac0]


na linha em vermelho voce usa atribui o parametro conforme o tipo do dado: string, integer, float,etc

Qualquer coisa estamos por aqui.


Responder Citar

13/08/2004

Rockbilly

blz, + uma vez... obrigado!


Responder Citar

13/08/2004

Paullus

// seu código da pesquisa
ADOQuery1.Active := true;

if ADOQuery1.RecordCount = 0 then
  ShowMessage(´Nome não encontrado´);


A propriedade [b:df1fd7eddb]RecordCount[/b:df1fd7eddb] de qualquer TDataSet te retorna a quantidade de registros informadas.


Responder Citar

13/08/2004

Vinicius2k

A propriedade [b:50361998d7]RecordCount[/b:50361998d7] de qualquer TDataSet te retorna a quantidade de registros informadas.


Qualquer TDataSet não... exemplos :
IBX - IBQuery e IBDataSet, sem aplicação do FetchAll não retorna corretamente...
dbExpress - SQLQuery e SQLDataSet, se existirem parametros ou forem Selects com Joins, a leitura causa exceção...

T+


Responder Citar

17/08/2004

Paullus

Qualquer TDataSet não... exemplos : IBX - IBQuery e IBDataSet, sem aplicação do FetchAll não retorna corretamente... dbExpress - SQLQuery e SQLDataSet, se existirem parametros ou forem Selects com Joins, a leitura causa exceção...


Dessa eu não sabia. :oops:
Vivendo e aprendendo... obrigado. :wink:


Responder Citar