Filtro com datas. Facão no pescoço...

Delphi

03/02/2003

:cry:
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

Chrod

Curtidas 0

Respostas

Anonymous

Anonymous

03/02/2003

olha so..
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+


GOSTEI 0
Anonymous

Anonymous

03/02/2003

Exemplo:

Utilizo AdoQuery


´Select * from alunos where Month(data_nascimento) = 01´


GOSTEI 0
Chrod

Chrod

03/02/2003

Amigo, desculpe mas ainda nao sou tao experiente e nunca usei esse comando que vc informou. Onde devo colocar o select * from...
Esqueci de dizer que estou usando TTable.


GOSTEI 0
Anonymous

Anonymous

03/02/2003

Como vc está usando Table a rotina que eu utiliza é esta, até agora não falhou: Declare as variáveis: Filtroantigo, filtro : String;
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


GOSTEI 0
Anonymous

Anonymous

03/02/2003

Caro Chrod,

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


GOSTEI 0
POSTAR