Filtrar registros

Delphi

25/10/2010

Fala aí galerinhaa! Preciso muito saber como fazer uma pesquisa por período.!       ex: Num movimento de caixa, eu quero saber os valores diários de um determinado período de dias, onde o usuário escolhe a data inicial e a final:   # data inicial = 01/10/2010  & data final = 20/10/2010 (sendo que essas datas são obtidas atraves do componente datetimepicker )   o usuário ao clicar no botão de " pesquisar ", aparece no dbgrid, todos os registros da tabela que possuem data entre esse período.   Como eu devo fazer isso ?? Não to conseguindo de jeito nenhum encontrar solução para isso.   p.s: infelizmente eu uso delphi 4  , e trabalho com Ttable [bancod e dados é o database desktop]!! Preciso da ajuda de vocês pessoal. Beijinhos!!         Atenciosamente. 
Yuli Chrysostomo

Yuli Chrysostomo

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

25/10/2010

A ordem da rotina abaixo (Mes, Dia e Ano), depende de qual banco de dados você utiliza.
function  SQLData(Data: TDate): string;
var
  Mes, Dia, Ano: Word;
begin
  DecodeDate( Data, Ano, Mes, Dia );
  Result := QuotedStr( IntToStr(Mes) + '/' + IntToStr(Dia) + '/' + IntToStr(Ano) );
end;


SQL := 
  ' SELECT' +
  '   *' +
  ' FROM' +
  '   TABELA' +
  ' WHERE' +
  '   CampoData BETWEEN ' + SQLData( DateTimePickerInicial.Date ) + ' AND ' + SQLData( DateTimePickerFinal.Date );


Espero ter colaborado.
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

cara, na verdade eu to fazendo um projeto final no colégio .. e preciso terminar o meu sistema para conseguir ser aprovada. Mas ainda sou iniciante e pra dizer sinceramente pra ti, eu não entendi mt bem a lógica do seu código..   Se você puder me explicar, onde eu devo colocar o código e tal..eu agradeceria mt. rs. E desculpe o incomodo.
GOSTEI 0
Wilson Junior

Wilson Junior

25/10/2010

Veja se assim você entende:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtnFiltrar: TBitBtn;
    Table1: TTable;
    procedure BitBtnFiltrarClick(Sender: TObject);
  private
    function  SQLData(Data: TDate): string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.SQLData(Data: TDate): string;
var
  Mes, Dia, Ano: Word;
begin
  DecodeDate( Data, Ano, Mes, Dia );
  Result := QuotedStr( IntToStr(Mes) + '/' + IntToStr(Dia) + '/' + IntToStr(Ano) );
end;

procedure TForm1.BitBtnFiltrarClick(Sender: TObject);
begin
  Table1.Filtered := False;
  Table1.Filter := 'CampoData >= ' + SQLData( DateTimePickerInicial.Date ) +
    ' AND CampoData >= ' + SQLData( DateTimePickerFinal.Date );
  Table1.Filtered := True;
end;

end.


Espero ter colaborado.
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

beleza cara, mas onde eu vou mostrar o resultado da pesquisa ?? queria mostrar em algum lugar.. pra uma melhor visualização; qual componente devo usar ??     valeu!!
GOSTEI 0
Marcelo Diniz

Marcelo Diniz

25/10/2010


beleza cara, mas onde eu vou mostrar o resultado da pesquisa ??
queria mostrar em algum lugar.. pra uma melhor visualização;
qual componente devo usar ??
 
 
valeu!!
 

Você comentou que iria usar um DBGRID, acredito que seja a melhor opção para visualizar os registros.Você já consegue visualizar todos os registros de sua tabela?Ou deseja que seja feito um exemplo completo?
GOSTEI 0
Wilson Junior

Wilson Junior

25/10/2010

Coloque um componente TDataSource e vincule o TTable a propriedade TDataSource.DataSet, após inclua um componente TDBGrid e vincule o TDataSource incluído anteriormente a propriedade DataSource.

Espero ter colaborado.
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

Wilson desculpe te pertubar cara, mas eu to meio perdida, kkk² to em dúvida do que eu devo colocar nas instruções do meu SQL.   eu to colocando o código que você tinha mandado anteriormente:
SQL := 'select' + '*' + 'from' +  'Caixa'+
'where'+ 'Data'+
Between SQLData(DatetimePicker1.date) + 'and' +
SQLData(Datetimepicker2.date)
  Mas ta dando erro aqui:   " Invalid use of keyword token: date) line number: 3 "    o qe devo fazer ??     tah batendo o desespero.. tenho que terminar esse projeto, senão fico reprovada. Desde já agradeço. Beijinhos '-'
GOSTEI 0
Wilson Junior

Wilson Junior

25/10/2010

Tente assim
SQL :=
  ' SELECT' +
  '   cx.*' +
  ' FROM' +
  '   CAIXA cx'+
  ' WHERE' +
  '   cx.Data BETWEEN ' + SQLData(DatetimePicker1.Date) + ' AND ' + SQLData(Datetimepicker2.date)


Espero ter colaborado.
GOSTEI 0
Yuli Chrysostomo

Yuli Chrysostomo

25/10/2010

Pessoal muito obrigada pela ajuda de vocês!! Eu consegui resolver meu problema.. Mt mt mt obrigada a todos vocês. E pra quem quiser o código qe eu usei.. tah aí :  
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
table1.IndexFieldNames :='Data'; //Ativa o índice secundário por Data
table1.Filter := 'Data >=''' + edit1.text + '''' +
'and Data <= ''' + edit2.text  + '''';
table1.Filtered := True;
end;
  e antes eu tive que criar um indice secundário na minha tabela!   Beijiinhos galera! Até a próxima.
GOSTEI 0
POSTAR