Array
(
)

Consulta em sql

Luiz_aquino
   - 20 ago 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


Tnaires
   - 20 ago 2004

Olá
Use parâmetros!
Escreva o seguinte SQL:
#Código

SELECT * FROM Cliente WHERE Data BETWEEN :Data1 AND :Data2

E, em tempo de execução:
#Código
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


Luiz_aquino
   - 20 ago 2004

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


Sandra
   - 20 ago 2004

Luiz,

#Código

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.


Ou, seguindo o exemplo do tnaires, pode escrever assim:
#Código
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;



Luiz_aquino
   - 20 ago 2004

ele da msg de erro Invalid use of Keywords


Tnaires
   - 20 ago 2004

Bom... Talvez vc já tenha escrito algo no seu sql e tenha esquecido. Adicione a seguinte linha à sugestão da sandra:
#Código

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