Intervalo de datas em SQL
Olá pessoal estou tentando fazer uma consulta em SQL que me retorne os registros que foram criados em uma determinada data. Estou usando o Delphi 5 e ADO. Estou tentando usar o seguinte codigo:
Var Inicio, Final: String;
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
DateTimePicker2.Date := DateTimePicker1.Date;
end
Else
begin
Inicio := DateToStr(DateTimePicker1.Date);
Final := DateToStr(DateTimePicker2.Date);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data >=:pInicial and Data<=:pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
ADOQuery1.Prepare;
ADOQuery1.Open;
Alquem sabe me dizer porque não funciona.
Desde já agradeço.
Emílio
Var Inicio, Final: String;
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
DateTimePicker2.Date := DateTimePicker1.Date;
end
Else
begin
Inicio := DateToStr(DateTimePicker1.Date);
Final := DateToStr(DateTimePicker2.Date);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data >=:pInicial and Data<=:pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
ADOQuery1.Prepare;
ADOQuery1.Open;
Alquem sabe me dizer porque não funciona.
Desde já agradeço.
Emílio
Emilio
Curtidas 0
Respostas
Bampavao
10/10/2003
VEJA SE ASSIM FUNCIONA...
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data BETWEEN :pInicial AND :pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data BETWEEN :pInicial AND :pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
GOSTEI 0
Tand
10/10/2003
Usa StrToDateTime.
:D
Abraços
:D
Abraços
GOSTEI 0
Emilio
10/10/2003
Agora esta me retornando a seguinte mensagem: Undeclared identifer: ´ASDateTime´.
Existe alguma outra maneira de fazer esta consulta?
Desde já agradeço
Emílio
Existe alguma outra maneira de fazer esta consulta?
Desde já agradeço
Emílio
GOSTEI 0
Bampavao
10/10/2003
Não sei se vc usou a dika que dei, mas agora tenta assim
VEJA SE ASSIM FUNCIONA...
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data BETWEEN :pInicial AND :pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).Value := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).Value := StrToDate(Final);
VEJA SE ASSIM FUNCIONA...
ADOQuery1.SQL.Text := ´SELECT * FROM Contatos WHERE Data BETWEEN :pInicial AND :pFinal´;
ADOQuery1.Parameters.ParamByName(´pInicial´).Value := StrToDate(Inicio);
ADOQuery1.Parameters.ParamByName(´pFinal´).Value := StrToDate(Final);
GOSTEI 0