Filtro com datas. Facão no pescoço...
03/02/2003
0
Por favor me ajudem a filtrar o seguinte:
tenho um dbedit que me informa a data de vencimento de um título. Está no formato (01/03/2003).
Como faço para saber só os registros que vencem em janeiro, por exemplo.
Sempre faço filtros usando o comando accept no OnFilterRecord da tabela, mas nesse caso não para onde ir.
Agradeço muito a quem ajudar!
Chrod
Posts
03/02/2003
Anonymous
a melhor forma de voce fazer isso, seria filtrando o mes...
exemplo
select * from alunos
where data_nascimento >= 01/01/1981 and data_nascimento <= 31/01/1981
claro, q as datas vc passa por parametros
mas soq o 1o dia eh fixo.. mas o ultimo varia..
entao vc tem q saber qual o dia do mes q vc quer
a rotina entao, eh essa
function TfListaRepasse.UltimoDiaDoMes(Mes: Word): TDate;
var
ano, dia:word;
begin
ano:=StrToInt(Trim(Edit1.Text));
dia:=0;
case mes of
2 : begin
if IsLeapYear(Ano) then dia:=29
else dia:=28;
end;
1,3,5,7,8,10,12 : dia:=31;
4,6,9,11 : dia:=3;
end;
result:=EncodeDate(ano,mes,dia);
end;
qqr duvida so dizer.. t+
03/02/2003
Anonymous
Utilizo AdoQuery
´Select * from alunos where Month(data_nascimento) = 01´
03/02/2003
Chrod
Esqueci de dizer que estou usando TTable.
04/02/2003
Anonymous
Filtradoantes : Boolean;
FiltroAntigo := Table1.Filter;
FiltradoAntes := Table1.Filtered;
table1.Filtered := False;
filtro := ´dtinicial>= ´+ quotedstr(maskedit1.text) + ´ and dttfinal<=´+ quotedstr(maskedit2.text);
Table1.filter:= filtro;
Table1.Filtered := true;
Espero ter ajudado
04/02/2003
Anonymous
Não sei qual a versão de Delphi que você está usando, mas na versão 6 temos a função MonthOfTheYear, que, como o nome já diz, retorna o número do mês da data que você passar como parâmetro.
Outra possibilidade, seria você deixar o período em aberto para o usuário escolher e não precisaria mudar muita coisa na sua lógica.
Alexandre Mello
afmello@codesa.com.br
Clique aqui para fazer login e interagir na Comunidade :)