OPERACOES COM DATAS

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

conde
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 07 Jul 2004 19:20

OPERACOES COM DATAS

Mensagem por conde »

OLA!!
PRECISO GERAR UM RELATORIO DO MES INFORMADO PARA TRAS , SERA QUE POSSO UTILIZAR O "<" , CONFORME ABAIXO?

DO WHILE DTOS(emissao) < cAnoMes .AND.!EOF() OU

DO WHILE left(DTOS(PAGAMENTO),6) < (V_ANOMES) .AND. !EOF()

O QUE ACONTECE EM AMBOS OS CASOS É QUE QUANDO USO "<" A LISTAGEM NAO SAI , E SE , COLOCAR "=" A LISTAGEM SAI TOTAL INDEPENDENTE DA MINHA DATA.
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Pode sim.

Usando a função dtos() ela retorna anomêsdia

Nesse caso que vc postou

DO WHILE DTOS(emissao) < cAnoMes .AND.!EOF()

A variavel cAnoMes possue tamanho 6 = ( 4 (ano) + 2 (mes) e o retorno
do dtos() conterá tamanho 8.


Aqui a esta correta

DO WHILE left(DTOS(PAGAMENTO),6) < (V_ANOMES) .AND. !EOF()

Verifique se o indice que vc esta usando esta ordenado pela data onde
vc esta executando seu laço While.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Se vc esta querendo imprimir até um determindo mes/ano, então:

xanomes := '200612'

dbgotop()
while !eof() .and. left(dtos(vencimento), 6) < xanomes
...
dbskip()
end

- seu arquivo deve estar indexado por data de vencimento.
-----------------
se é para imprimir só os vencidos nos meses anteriores.

dbgotop()
while !eof()
if left(dtos(vencimento), 6) < xanomes
...
end
dbskip()
end

Espero ter ajudado. Especifique melhor o que vc quer fazer, se isto não ajudar.
"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