Array
(
)

Registro não encontrado!

Rockbilly
   - 10 ago 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:

#Código

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.


Melo
   - 10 ago 2004

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


Rockbilly
   - 11 ago 2004

brigado melo, vou tentar fazer isso!


Rockbilly
   - 13 ago 2004

não deu certo, ele sempre dá ´Registro não encotrado!´, olhem meu código:
#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:
#Código
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;



Rockbilly
   - 13 ago 2004

desculpa, os códigos são esses:
#Código

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:
#Código
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;



Macario
   - 13 ago 2004


Citação:
desculpa, os códigos são esses:
#Código

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:
#Código
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.


Citação:

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´);



Rockbilly
   - 13 ago 2004

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


Macario
   - 13 ago 2004

Há uma dica pro seu código.

Tente assim:


Citação:
#Código


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´);


ou assim:

Citação:
#Código

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] Params.ParamByName(´Codigo´).asString := edit1.text;[/color]
Open;
end;

if ADOQuery1.isEmpty then
ShowMessage(´Não há dados a exibir´);


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

Qualquer coisa estamos por aqui.


Rockbilly
   - 13 ago 2004

blz, + uma vez... obrigado!


Paullus
   - 13 ago 2004

#Código

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

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


A propriedade RecordCount de qualquer TDataSet te retorna a quantidade de registros informadas.


Vinicius2k
   - 13 ago 2004


Citação:
A propriedade RecordCount 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+


Paullus
   - 17 ago 2004


Citação:
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: