Relatorio filtrado por periodo de horas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Relatorio filtrado por periodo de horas

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Relatorio filtrado por periodo de horas

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Relatorio filtrado por periodo de horas

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Relatorio filtrado por periodo de horas

Mensagem 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 !!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Relatorio filtrado por periodo de horas

Mensagem por JoséQuintas »

E com a correção do Toledo.
Acabei errando na comparação.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Relatorio filtrado por periodo de horas

Mensagem 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
EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Relatorio filtrado por periodo de horas

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Relatorio filtrado por periodo de horas

Mensagem 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 )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder