Like em SQL

Delphi

09/07/2003

Olá eu preciso filtrar uma tabela. Seria assim:
Uma pessoa digita uma data e eu faço uma busca pela tabela.
Eu estou utilizando este código abaixo, que é a procedure chamada ao clicar nop botão buscar:
procedure TFFuncao.BuscaDataNasc(Data:String);
begin
DMTabelas.QAgenda.Close;
DMTabelas.QAgenda.SQL.Clear;
DMTabelas.QAgenda.SQL.Add(´select * from BDAgenda´);
DMTabelas.QAgenda.SQL.Add(´where Data_Nasc Like´ + QuotedStr(Data));
DMTabelas.QAgenda.ParamByName(´Data´).AsString := Data;
DMTabelas.QAgenda.Open;
end;
Porém fala que não foi possível localizar o parâmetro DATA. O que pode ser?


Mineiro

Mineiro

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

09/07/2003

Colega,

Realmente você não definiu um parâmetro data, pois você está utilizando uma consulta dinâmica.

Para resolver de forma dinâmica:

procedure TFFuncao.BuscaDataNasc(Data:String); 
begin 
DMTabelas.QAgenda.Close; 
DMTabelas.QAgenda.SQL.Clear; 
DMTabelas.QAgenda.SQL.Add(´select * from BDAgenda´); 
DMTabelas.QAgenda.SQL.Add(´where Data_Nasc Like ´ + QuotedStr(Data)); 
DMTabelas.QAgenda.Open; 
end; 


Ou com uso de parâmetro:

procedure TFFuncao.BuscaDataNasc(Data:String); 
begin 
DMTabelas.QAgenda.Close; 
DMTabelas.QAgenda.SQL.Clear; 
DMTabelas.QAgenda.SQL.Add(´select * from BDAgenda´); 
DMTabelas.QAgenda.SQL.Add(´where Data_Nasc Like :DATA´; 
DMTabelas.QAgenda.ParamByName(´Data´).AsDate := Data; 
DMTabelas.QAgenda.Open; 
end; 


O : (dois pontos) estabelece o parâmetro.


GOSTEI 0
Kanedasam

Kanedasam

09/07/2003

Completando o que nosso amigo Aroldo Zanela esqueceu de comentar e lhe chamar a atenção e que no seu código original, o seu like esta sem espaço

DMTabelas.QAgenda.SQL.Add(´where Data_Nasc[color=red:1250db108c] Like´ [/color:1250db108c]+ QuotedStr(Data));

isto resultara em SQL o seguinte erro

where Data_Nasc [color=red:1250db108c]Like02/04/2002 [/color:1250db108c]// exemplo

e deviria ter espaço

DMTabelas.QAgenda.SQL.Add(´where Data_Nasc [color=blue:1250db108c]Like ´ [/color:1250db108c]+ QuotedStr(Data));

isto resultara em SQL a sintaxe correta

where Data_Nasc [color=blue:1250db108c]Like 02/04/2002[/color:1250db108c]


GOSTEI 0
POSTAR