Fórum Criar consulta utilizando Data inicial e final #412439
05/02/2012
0
ex.: quando gravo um registro na tabela gravo também a data que foi feito esse cadastro.
gostaria de fazer uma consulta utilizando uma data inicial e uma data final
estou utilizando o Delphi 7 e banco de dados SQL Server 2008.
tentei fazer assim mas está dando erro:
procedure TForm1.Button1Click(Sender: TObject);
var
dtini, dtfin: TDate;
begin
dtini:=DateTimePicker1.date;
dtfin:=DateTimePicker2.date;
With ADOQuery1 do
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(SELECT * FROM clientes WHERE cli_data >= +(dtini) and cli_data <= +(dtfin));
ADOQuery1.Open;
end;
end.
ele me retorna o seguinte erro:
missing operator or semicolon
incompatible types string and tdate
desde já agradeço a todos
Alessandro
Curtir tópico
+ 0Posts
06/02/2012
Alan Souza
ADOQuery1.SQL.Add(SELECT * FROM clientes WHERE cli_data >= :dtini and cli_data <= :dtfin); ADOQuery1.Prepare; ADOQuery1.Parameters.ParamByName(dtini).AsDateTime := dtini; ADOQuery1.Parameters.ParamByName(dtfin).AsDateTime := dtfin; ADOQuery1.Open;
é possível utilizar o between para comparar intervalos, ficaria WHERE cli_data between :dtini and :dtfin
Gostei + 0
06/02/2012
Nilson Alvernaz
SQL1 := SQL1 + and Reincidente = 1 +#13;
SQL1 := SQL1 + and DtReincidente >= :DtInicial+#13;
SQL1 := SQL1 + and DtReincidente <= :DtFinal +#13;
esse é o final da pedaço da query.
cdsPadrao.Params[0].AsDateTime := StrToDate(meDtInicial.Text);
cdsPadrao.Params[1].AsDateTime := StrToDate(meDtFinal.Text);
cdsPadrao.Close;
cdsPadrao.CommandText := (SQL1);
cdsPadrao.Open;
uso esses paramentros para puchar relatórios... e trás as datas certinho
Gostei + 0
10/02/2012
Marcus Cordeiro
procedure TForm1.Button1Click(Sender: TObject); var dtini, dtfin: TDate; begin dtini:=DateTimePicker1.date; dtfin:=DateTimePicker2.date; With ADOQuery1 do ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT * FROM clientes WHERE cli_data >= +(dtini) and cli_data <= +(dtfin)); ADOQuery1.Open; end;
Você usa o comando Between para filtra essa data, assim:
var
dtini, dtfin: TDate;
begin
dtini:=DateTimePicker1.date;
dtfin:=DateTimePicker2.date;
//aqui eu sempre coloco clientedataset.close
With ADOQuery1 do
begin
sql.clear;
SQL.Add(SELECT * FROM clientes WHERE cli_data between :datini and :datfim);
SQL.Add(order by cli_data);
Parameters.Parambyname(datini).value := dtini;
Parameters.Parambyname(datfim).value := dtfim;
end;
//aqui eu sempre coloco clientedataset.Open;
end;
Gostei + 0
10/02/2012
Marco Salles
http://www.activedelphi.com.br/forum/viewtopic.php?t=71035&highlight=data&sid=0862be95351364b5f60da71153001693
Basicamente foi a linha de raciocineo colocado pelos colaboradores do DevMadia tb
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)