filtrar por varias datas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

filtrar por varias datas

Mensagem por matrix »

pessoal,

é assim tenho no cadastro 4 datas assim dispostas DT1,DT2,DT3,DT4

e preciso gerar um relatorio com os itens que entiverem entre as datas informadas ou seja:
se eu pedir um relatorio de 01/11/06 a 01/12/06, e qquer uma das datas (DT1,DT2,DT3,DT4) estiver dentro desse periodo, mostra o registro.

me fugiu a logica, agradeço.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Mensagem por MARINI »

A lógica seria:

data>=datainicial .and. data<=datafinal
Sds
Marini
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Index o sistema pelo campo de data fazendo o seguinte

Código: Selecionar todos

INDEX ON CAMPO_DATA TO INDICE.NTX
Agora para vasculhar pela um set de data

Código: Selecionar todos

seek datainicial
do while campo_data<=datafinal .and. !eof()
   ....
   skip
enddo
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Seus campos são:
dt1, dt2, dt3, dt4

suas datas são: data1 e data2

while !eof()

if data2 < dt1 .or. data1 > dt1
dbskip()
loop
end

if data2 < dt2 .or. data1 > dt2
dbskip()
loop
end

if data2 < dt3 .or. data1 > dt3
dbskip()
loop
end

if data2 < dt4 .or. data1 > dt4
dbskip()
loop
end

// Imprime

dbskip()

end

OU ----------

while !eof()

if (data2 >= dt1 .and. data1 <= dt1) .and.;
(data2 >= dt2 .and. data1 <= dt2) .and.;
(data2 >= dt3 .and. data1 <= dt3) .and.;
(data2 >= dt4 .and. data1 <= dt4)

// Imprime

end

dbskip()

end
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Responder