Criar consulta utilizando Data inicial e final
Pessoal estou precisando fazer uma consulta entre dois intervalos, por data.
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
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
Curtidas 0
Respostas
Alan Souza
05/02/2012
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
Nilson Alvernaz
05/02/2012
...
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
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
Marcus Cordeiro
05/02/2012
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
Marco Salles
05/02/2012
Ja foi resolvido em
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
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