Consulta em sql

Delphi

20/08/2004

Na minha tabela tenho um campo Data gostaria de fazer uma consulta
em seql ao clicar o botão ele execute uma query, a consulta teria um
periodo entre essa Data, o inicio e o fim, digamos pegar todos clientes nessa data, mas tenho q usar dois DateTimePicker1, como faço no código sql? ex
query1.sql.add(´select * from cliente where data > DateTimePicker1 and
data < DateTimePicker2´)

como faço isso?

valeu


Luiz_aquino

Luiz_aquino

Curtidas 0

Respostas

Tnaires

Tnaires

20/08/2004

Olá
Use parâmetros!
Escreva o seguinte SQL:
SELECT * FROM Cliente WHERE Data BETWEEN :Data1 AND :Data2

E, em tempo de execução:
with qryConsulta do
begin
  Close;
  ParamByName(´Data1´).AsDateTime := dtpInicio.Date;
  ParamByName(´Data2´).AsDateTime := dtpFim.Date;
  Open;
end;

Mas atenção! Não esqueça q o DateTimePicker grava horas também. Isso pode levar a erros no resultado. Zere os campos Time dos DateTimePickers.
Abraços


GOSTEI 0
Luiz_aquino

Luiz_aquino

20/08/2004

Onde eu implemento a linha com o codigo em sql ou melhor como faço isso?


GOSTEI 0
Sandra

Sandra

20/08/2004

Luiz,

SELECT * FROM Cliente WHERE Data BETWEEN :Data1 AND :Data2
Essa linha do Select você coloca diretamente na propriedade SQL da sua Query, no Object Inspector.


[b:ccedcafa0e]Ou[/b:ccedcafa0e], seguindo o exemplo do tnaires, pode escrever assim:
with qryConsulta do 
begin 
  Close; 
  SQL.Add(´SELECT * FROM Cliente ´);
  SQL.Add(´WHERE Data BETWEEN :Data1 AND :Data2´);
  ParamByName(´Data1´).AsDateTime := dtpInicio.Date; 
  ParamByName(´Data2´).AsDateTime := dtpFim.Date; 
  Open; 
end;



GOSTEI 0
Luiz_aquino

Luiz_aquino

20/08/2004

ele da msg de erro Invalid use of Keywords


GOSTEI 0
Tnaires

Tnaires

20/08/2004

Bom... Talvez vc já tenha escrito algo no seu sql e tenha esquecido. Adicione a seguinte linha à sugestão da sandra:
with qryConsulta do 
begin 
  Close; 
  SQL.Clear; // Esta linha limpa o SQL antes d adicionar algo
  SQL.Add(´SELECT * FROM Cliente ´); 
  SQL.Add(´WHERE Data BETWEEN :Data1 AND :Data2´); 
  ParamByName(´Data1´).AsDateTime := dtpInicio.Date; 
  ParamByName(´Data2´).AsDateTime := dtpFim.Date; 
  Open; 
end;

Se der erro d novo... hmmm... q banco vc usa?
Abraços


GOSTEI 0
POSTAR