Página 1 de 1
Relatorio filtrado por periodo de horas
Enviado: 05 Set 2016 16:53
por EduardoSPno
Ola amigos tudo bem!?!
Preciso de uma ajuda, precisava gerar um relatório onde exiba a data, valor e hora em que foram feitas as vendas, o problema que eh um restaurante e funciona ate de madrugada, ai fica o problemas
dia 01/09 a partir das 18:00 ate o dia 02/09 as 04:00
Alguém já fez isso, obrigaduuuu
Relatorio filtrado por periodo de horas
Enviado: 05 Set 2016 18:08
por JoséQuintas
Não entendi.
Vai exibir as vendas de determinada data?
Código: Selecionar todos
dData := Date()
CalculaPeriodo( dData, @dDatIni, @cHorIni, @dDatFim, @cHorFim )
SEEK Dtos( dDatIni ) + cHorIni SOFTSEEK
DO WHILE .NOT. Eof()
IF vendas->Data > dDatFim
IF vendas->Hora > cHorFim
EXIT
ENDIF
ENDIF
? "ddd"
SKIP
ENDDO
FUNCTION CalculaPeriodo( dData, dDatIni, cHorIni, dDatFim, cHorFim )
dDatIni := dData
cHorIni := "10:00:00"
dDatFim := dData + 1
cHorFim := "05:00:00"
RETURN NIL
Relatorio filtrado por periodo de horas
Enviado: 05 Set 2016 19:26
por Toledo
JoséQuintas escreveu:Não entendi.
Se eu entendi direito, então o código do JoséQuintas teria a seguinte modificação:
Código: Selecionar todos
DO WHILE .NOT. Eof()
IF vendas->Data > dDatFim
EXIT
ENDIF
IF vendas->Data == dDatFim
IF vendas->Hora > cHorFim
EXIT
ENDIF
ENDIF
Abraços,
Relatorio filtrado por periodo de horas
Enviado: 05 Set 2016 20:29
por EduardoSPno
Exatamente isso .... data inicial, hora inicial, data final, hora final ...
Tentei fazer mas esbarrei nas horas, pois inicia em uma data e hora, ex: 01/09 as 18:00 e finaliza em outro dia e hora ex: 02/09 as 03:00
Vou testar e posto, muito obrigado pela ajuda !!
Relatorio filtrado por periodo de horas
Enviado: 06 Set 2016 00:38
por JoséQuintas
E com a correção do Toledo.
Acabei errando na comparação.
Relatorio filtrado por periodo de horas
Enviado: 06 Set 2016 21:56
por EduardoSPno
Ola amigos, deu certinho, segue código
Código: Selecionar todos
cHH1="20:00:00"
cHH2="04:00:00"
cDA1=CTOD("01/09/2016")
cDA2=CTOD("02/09/2016")
SELECT FLUXO
INDEX ON DTOS(DATA)+HORA TO INDFLUX
SET INDEX TO INDFLUX
GO TOP
SEEK Dtos( cDA1 ) + cHH1 SOFTSEEK
set devi to print
set print to C:\SISTEMA\1.TXT
SETPRC(0,0)
DO WHILE .NOT. Eof()
IF FLUXO->Data > cDA2
EXIT
ENDIF
IF FLUXO->Data == cDA2
IF FLUXO->Hora > cHH2
EXIT
ENDIF
ENDIF
@PROW()+1,01 SAY DTOC(DATA)+" - "+STR(VALOR)+" - "+HORA+" - "+STR(NVENDA)+" - "
SKIP
ENDDO
Relatorio filtrado por periodo de horas
Enviado: 06 Set 2016 22:00
por EduardoSPno
Só pra dificultar um pouco aos mestres Jose Quintas e Toledo, será que conseguiriamos gerar esse código utilizando a função INDEX/WHILE, por exemplo:
INDEX ON (campo) to INDICE WHILE (variavel=>variavel)
Mas antes disto gostaria muito de agradecer a dica dos mestres Jose Quintas e Toledo.
Relatorio filtrado por periodo de horas
Enviado: 06 Set 2016 22:43
por JoséQuintas
Pra garantir:
Código: Selecionar todos
INDEX ON ... TO TEMP WHILE ( Data == dataIni .AND. Hora >= HoraIni ) .OR. ( Data == datafim .AND. Hora <= Horafim )