Filtrar registros
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
Curtidas 0
Respostas
Wilson Junior
25/10/2010
A ordem da rotina abaixo (Mes, Dia e Ano), depende de qual banco de dados você utiliza.
Espero ter colaborado.
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
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
25/10/2010
Veja se assim você entende:
Espero ter colaborado.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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!!
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
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.
Espero ter colaborado.
GOSTEI 0
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:
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 '-'
SQL := 'select' + '*' + 'from' + 'Caixa'+ 'where'+ 'Data'+ Between SQLData(DatetimePicker1.date) + 'and' + SQLData(Datetimepicker2.date)
GOSTEI 0
Wilson Junior
25/10/2010
Tente assim
Espero ter colaborado.
SQL := ' SELECT' + ' cx.*' + ' FROM' + ' CAIXA cx'+ ' WHERE' + ' cx.Data BETWEEN ' + SQLData(DatetimePicker1.Date) + ' AND ' + SQLData(Datetimepicker2.date)
Espero ter colaborado.
GOSTEI 0
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í :
e antes eu tive que criar um indice secundário na minha tabela!
Beijiinhos galera!
Até a próxima.
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;
GOSTEI 0