Pesquisa por intervalo de datas no delphi com interbase
Estou usando Delphi e InterBase como banco de dados e já tentei várias possibilidades de pesquisa por intervalo de datas.
Agradeço antecipadamente! :)
Agradeço antecipadamente! :)
Tatiane
Curtidas 0
Respostas
Sremulador
20/11/2007
você pode utilizar o between ou <>
GOSTEI 0
Itepi
20/11/2007
Ex:
Onde :DATA1 e :DATA2 são parametros que serão informados em tempo de execução.
SELECT * FROM TABELA WHERE DATA BETWEEN :DATA1 AND :DATA2
Onde :DATA1 e :DATA2 são parametros que serão informados em tempo de execução.
GOSTEI 0
Tatiane
20/11/2007
Na minha tela de pesquisa mesmo atribuindo os valores das datas tipo
Data1:=MaskEdit1.Text;
Data2:=MaskEdit2.Text;
ainda dá erro quando uso esse código, olha só como está!, sei lah talvez também to fazendo errado!
procedure TFrmAgenda.BtPesquisarClick(Sender: TObject);
Var Data1,Data2: String;
begin
if RadioGroup1.ItemIndex=-1 then
Begin
Showmessage(´Selecione o tipo de pesquisa que deseja realizar!´);
end;
Pes:=´´;
if RadioGroup1.ItemIndex=0 then
begin
If (MaskEdit1.Text <> ´´) then
If (Pes=´´) then
Pes:=´Where Data=´´´+MaskEdit1.Text+´´´´;
end
else
if RadioGroup1.ItemIndex=1 Then
Begin
If (MaskEdit1.Text <> ´´) then
If (Pes=´´) then
Pes:=´Where Data=´´´+MaskEdit1.Text+´´´´;
end
else
if RadioGroup1.ItemIndex=2 then
Begin
Data1:=MaskEdit1.Text;
Data2:=MaskEdit2.Text;
If (Pes=´´) then
Pes:=´Where Data Between :Data1 and :Data2´;
end;
FrmApresenta.IBTransaction1.Commit;
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add(´Select * From Tarefas ´+Pes);
IBQuery1.Open;
end;
Data1:=MaskEdit1.Text;
Data2:=MaskEdit2.Text;
ainda dá erro quando uso esse código, olha só como está!, sei lah talvez também to fazendo errado!
procedure TFrmAgenda.BtPesquisarClick(Sender: TObject);
Var Data1,Data2: String;
begin
if RadioGroup1.ItemIndex=-1 then
Begin
Showmessage(´Selecione o tipo de pesquisa que deseja realizar!´);
end;
Pes:=´´;
if RadioGroup1.ItemIndex=0 then
begin
If (MaskEdit1.Text <> ´´) then
If (Pes=´´) then
Pes:=´Where Data=´´´+MaskEdit1.Text+´´´´;
end
else
if RadioGroup1.ItemIndex=1 Then
Begin
If (MaskEdit1.Text <> ´´) then
If (Pes=´´) then
Pes:=´Where Data=´´´+MaskEdit1.Text+´´´´;
end
else
if RadioGroup1.ItemIndex=2 then
Begin
Data1:=MaskEdit1.Text;
Data2:=MaskEdit2.Text;
If (Pes=´´) then
Pes:=´Where Data Between :Data1 and :Data2´;
end;
FrmApresenta.IBTransaction1.Commit;
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add(´Select * From Tarefas ´+Pes);
IBQuery1.Open;
end;
GOSTEI 0
Gandalf.nho
20/11/2007
Experimente usar um componente DateTimePicker ao invés de MaskEdit para datas e procure passar os valores como parâmetros em vez de concatenar o valor diretamente na expressão. Isso permite passar a o valor diretamente como data, sem os problemas causados por más conversões para string.
GOSTEI 0
Tatiane
20/11/2007
Nossa cara valeu mesmo, agora ta funcionando direitinho! Ficou até mais enxuto!
GOSTEI 0