Filtro com datas. Facão no pescoço...
: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!
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
Curtidas 0
Respostas
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+
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
03/02/2003
Exemplo:
Utilizo AdoQuery
´Select * from alunos where Month(data_nascimento) = 01´
Utilizo AdoQuery
´Select * from alunos where Month(data_nascimento) = 01´
GOSTEI 0
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.
Esqueci de dizer que estou usando TTable.
GOSTEI 0
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
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
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
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