Filtro com Data como?
Olá pessoal.
Estou com um grande problema.
Não consigo filtrar campos data com a Query.
Eu sei usar a confição IF para verificar qual é a maior ou menor data.
A minnha tabela1 a data de recadastramento: Query1.fieldbyName(´Data´).AsString:= formatdatatime(´dd/mm/yyy´,now);
A minnha tabela2, fica as possoas cadastradas.
Nesta minha tabela2 tem o campo de recadastramento.
E eu coloquei uma instrução SQL para serem selecionadas toda as pessoas que tiverem data igual ou maior da data de recadastramento.
Sendo que eu mando para uma variável e esta variável eu coloco no comando SQL...
Mas oque está faltando...
Eis o comando SQL: select * from DOCUMENTACAO WHERE DATA_RECADASTRAMENTO >= DATA_RECADASTRAMENTO ORDER BY NOME_PESSOA;
Estou com um grande problema.
Não consigo filtrar campos data com a Query.
Eu sei usar a confição IF para verificar qual é a maior ou menor data.
A minnha tabela1 a data de recadastramento: Query1.fieldbyName(´Data´).AsString:= formatdatatime(´dd/mm/yyy´,now);
A minnha tabela2, fica as possoas cadastradas.
Nesta minha tabela2 tem o campo de recadastramento.
E eu coloquei uma instrução SQL para serem selecionadas toda as pessoas que tiverem data igual ou maior da data de recadastramento.
Sendo que eu mando para uma variável e esta variável eu coloco no comando SQL...
Mas oque está faltando...
Eis o comando SQL: select * from DOCUMENTACAO WHERE DATA_RECADASTRAMENTO >= DATA_RECADASTRAMENTO ORDER BY NOME_PESSOA;
Max2006
Curtidas 0
Respostas
Adriano Santos
07/04/2007
Não entendi sua dúvida, mas eis um exemplo de filtro por datas em SQL:
Aqui usei um BETWEEN para filtrar entre duas datas, mas poderia usar o seu exemplo, mais ou menos assim:
procedure TForm1.Button1Click(Sender: TObject); var DataInicial : TDatetime; DataFinal : TDatetime; begin DataInicial := DateTimePicker_1.Date; DataFinal := DateTimePicker_2.Date; with Query1 do begin Close; Sql.Clear; Sql.Add(´SELECT * FROM MINHA_TABELA WHERE DATA_RECADASTRO BETWEEN :pDataInicial AND :pDataFinal´); ParamByName(´pDataInicial´).AsDateTime := DataInicial; ParamByName(´pDataFinal´).AsDateTime := DataFinal; Open; if IsEmpty then MessageDlg(´Não existem dados.´, mtInformation, [mbOk], 0); end; end;
Aqui usei um BETWEEN para filtrar entre duas datas, mas poderia usar o seu exemplo, mais ou menos assim:
procedure TForm1.Button1Click(Sender: TObject); var Data : TDatetime; begin Data := DateTimePicker_1.Date; with Query1 do begin Close; Sql.Clear; Sql.Add(´SELECT * FROM MINHA_TABELA WHERE DATA_RECADASTRO >= :pDataFiltro´); ParamByName(´pDataFiltro´).AsDateTime := Data; Open; if IsEmpty then MessageDlg(´Não existem dados.´, mtInformation, [mbOk], 0); end; end;
GOSTEI 0
Richard Lima
07/04/2007
1 - modifica o campo DATA_RECADASTRAMENTO na tabela para o tipo correto de armazenar datas de acordo com seu sgbd, nao grave data como string...
2 - na hora de cadastrar, tenta:
quando for selecionar, utilize parametros como mostrado pelo Adriano..
outra coisa, quando você iguala um campo a ele mesmo, isso retorna true, portanto essa tua pesquisa está trazendo todo mundo..
para uma pesquisa, compare um campo a um valor ou um campo a outro campo do mesmo tipo, nunca um campo com ele mesmo... novamente, veja o 2º exemplo do Adriano..
um abraço!
2 - na hora de cadastrar, tenta:
Query1.fieldbyName(´Data´).AsDateTime:= now;
quando for selecionar, utilize parametros como mostrado pelo Adriano..
outra coisa, quando você iguala um campo a ele mesmo, isso retorna true, portanto essa tua pesquisa está trazendo todo mundo..
select * from DOCUMENTACAO WHERE DATA_RECADASTRAMENTO >= DATA_RECADASTRAMENTO ORDER BY NOME_PESSOA
para uma pesquisa, compare um campo a um valor ou um campo a outro campo do mesmo tipo, nunca um campo com ele mesmo... novamente, veja o 2º exemplo do Adriano..
um abraço!
GOSTEI 0