Like em SQL
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?
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
Curtidas 0
Respostas
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:
Ou com uso de parâmetro:
O : (dois pontos) estabelece o parâmetro.
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
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]
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