como fazer pesquisa por data no delphi 2010

21/04/2019

0

Pessoal eu sou iniciante em delphi e queria ajuda pra faze uma pesquisa entre duas datas usando o datatimepicket,estou usando essa instrucao e nao esta dando certo me ajude, obrigado





data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);

ShowMessage(data1+'' '' +data2);

With DataModule1.ADOQueryBuscaCaixas do


begin

if active then close;




sql[3]:=''AND(tabelacolheita.colheitadata > "%''+data1+''%")'';
sql[4]:=''AND(tabelacolheita.colheitadata < "%''+data2+''%")'';
Open
; DataModule1.ADOQueryBuscaCaixas.Open;




end;

RvProject2.Execute;
Caio

Caio

Responder

Post mais votado

22/04/2019

tente:
data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);

ShowMessage(data1+' '+data2);

With DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(tabelacolheita.colheitadata BETWEEN :DATA1 AND :DATA2)';
	Parameters.ParamByName('data1').AsDate := datetimepicker1.Date;
	Parameters.ParamByName('data2').AsDate := datetimepicker2.Date;
	Open;
end;


ou
uses SQLTimSt;
....

data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);

ShowMessage(data1+' '+data2);

with DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(tabelacolheita.colheitadata BETWEEN :DATA1 AND :DATA2)';
	Parameters.ParamByName('data1').AsSQLTimeStamp := DateTimeToSQLTimeStamp(datetimepicker1.Date);
	Parameters.ParamByName('data2').AsSQLTimeStamp := DateTimeToSQLTimeStamp(datetimepicker2.Date);
	Open;
end;


ou ainda, no caso de usar SQL Server:
data1 := FormatDateTime('yyyymmdd', datetimepicker1.Date);
data2 := FormatDateTime('yyyymmdd', datetimepicker2.Date);

ShowMessage(data1+' '+data2);

With DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(CONVERT(VARCHAR(8),tabelacolheita.colheitadata,112) BETWEEN '+data1+' AND '+data2+')';
	Open;
end;

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

22/04/2019

Caio

tente:
data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);

ShowMessage(data1+' '+data2);

With DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(tabelacolheita.colheitadata BETWEEN :DATA1 AND :DATA2)';
	Parameters.ParamByName('data1').AsDate := datetimepicker1.Date;
	Parameters.ParamByName('data2').AsDate := datetimepicker2.Date;
	Open;
end;


ou
uses SQLTimSt;
....

data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);

ShowMessage(data1+' '+data2);

with DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(tabelacolheita.colheitadata BETWEEN :DATA1 AND :DATA2)';
	Parameters.ParamByName('data1').AsSQLTimeStamp := DateTimeToSQLTimeStamp(datetimepicker1.Date);
	Parameters.ParamByName('data2').AsSQLTimeStamp := DateTimeToSQLTimeStamp(datetimepicker2.Date);
	Open;
end;


ou ainda, no caso de usar SQL Server:
data1 := FormatDateTime('yyyymmdd', datetimepicker1.Date);
data2 := FormatDateTime('yyyymmdd', datetimepicker2.Date);

ShowMessage(data1+' '+data2);

With DataModule1.ADOQueryBuscaCaixas do
begin
	if active then close;
	sql[3]:='AND(CONVERT(VARCHAR(8),tabelacolheita.colheitadata,112) BETWEEN '+data1+' AND '+data2+')';
	Open;
end;




parceiro boa noite amigo estou temdo dificuldade
na primeira instrucao q vc me passou .AsDate fica sublinado em vermelho
na segunda AsSQLTimeStamp fica em vermelho
Responder

23/04/2019

Emerson Nascimento

Coloquei várias opções porque eu não tenho Delphi instalado, então não tenho como passar algo mais preciso, logo aquilo é só um "norte".
De qualquer forma, se assim não funcionar:
data1:= datetostr(datetimepicker1.Date);
data2:= datetostr(datetimepicker2.Date);
 
ShowMessage(data1+' '+data2);
 
With DataModule1.ADOQueryBuscaCaixas do
begin
    if active then close;
    sql[3]:='AND(tabelacolheita.colheitadata BETWEEN :DATA1 AND :DATA2)';
    Parameters.ParamByName('data1').Value := datetimepicker1.Date;
    Parameters.ParamByName('data2').Value := datetimepicker2.Date;
    Open;
end;

tente a terceira opção apresentada na postagem anterior:
data1 := FormatDateTime('yyyymmdd', datetimepicker1.Date);
data2 := FormatDateTime('yyyymmdd', datetimepicker2.Date);
 
ShowMessage(data1+' '+data2);
 
With DataModule1.ADOQueryBuscaCaixas do
begin
    if active then close;
    sql[3]:='AND(CONVERT(VARCHAR(8),tabelacolheita.colheitadata,112) BETWEEN '+data1+' AND '+data2+')';
    Open;
end;

Uma dica: quando você postar uma dúvida, dê detalhes do teu ambiente: linguagem utilizada e versão do IDE, banco de dados e versão, e o que mais puder passar, para que a ajuda seja o mais personalizada possível, porque esta última sugestão funciona para SQL Server. Se estiver utilizando Oracle, troque CONVERT(VARCHAR(8),tabelacolheita.colheitadata,112) por TO_CHAR(tabelacolheita.colheitadata, 'YYYYMMDD').
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar