Página 2 de 2

Duvida Indice NTX

Enviado: 17 Nov 2015 02:04
por JoséQuintas
Procurei não alterar muito seu estilo.
Mas não resisti a mexer um pouco mais no fonte.
Já que seu relatório mostrava contas sem cadastro, o problema desta forma é não mostrar lançamentos sem conta.

E se realmente for pra mostrar uma única data, melhor criar um arquivo temporário com o que vai ser impresso.

Código: Selecionar todos

   CLEAR

   DO WHILE .T.
      @ 10, 10 SAY 'INFORME DATA DO MOVIMENTO'
      @ 10, 36 GET mdata PICTURE ' / / '
      READ
      IF mdata = CToD( ' / / ' )
         @ 20, 1 SAY 'DATA EM BRANCO'
         WAIT ', ENTER'
         LOOP
      ENDIF
      EXIT
   ENDDO

   SELECT 0
   USE CLIENTES
   INDEX ON nome TO Temp1 
   SELECT 0
   USE MOVIM
   INDEX ON Conta + Dtos( Data ) TO Temp2
   SELECT 0
   USE HISTOR INDEX IHISTOR

   SET PRINTER TO TESTE.TXT
   SET DEVICE TO PRINT
   @ 0, 0 SAY Chr( 27 ) + Chr( 15 )
   mlinha = 66
   mfolha = 1
   mtotcre = 0.00
   mtotdeb = 0.00
   mtotvap = 0.00
   mtotvales = 0.00
   mtotodeb = 0.00
   mtotrest = 0.00
   mdata = CToD( ' / / ' )
   mtotven = 0.00
   SELECT clientes
   GOTO TOP
   DO WHILE .NOT. Eof() // clientes em ordem alfabética
      SELECT movim
      SET SOFTSEEK ON // pra encontrar data igual ou acima (apesar que parece usar data única)
      SEEK clientes->Conta + Dtos( mData )
      SET SOFTSEEK OFF
      DO WHILE movim->Conta == clientes->Conta .AND. .NOT. Eof() // movimentos referentes ao cliente
         // IF movim->Dat_Lanc < mData // Pra que isto, se o SEEK já pulou datas menores?
         //    SKIP
         //    LOOP
         // ENDIF
         IF movim->Dat_Lanc > mdata 
            EXIT
         ENDIF
         IF mlinha > 58
            DO CCCABP20 WITH mfolha, mdata, mlinha
         ENDIF
         @ mlinha, 4  SAY clientes->Conta
         @ mlinha, 10 SAY clientes->Nome
         @ mlinha, 44 SAY clientes->Tipo
         SELECT histor
         SEEK movim->CT
         IF Eof()
            @ mlinha, 66 SAY '*******'
         ELSE
            @ mlinha, 66 SAY histor->Historico
         ENDIF
         SELECT movim
         @ mlinha, 78 SAY movim->Doc
         IF movim->CT < 10
            mtotdeb += movim->Valor
            DO CASE
            CASE movim->CT = 01 ; mtotvap   += movim->Valor
            CASE movim->CT = 02 ; mtotvales += movim->Valor
            CASE movim->CT = 06 ; mtotrest  += movim->Valor
            OTHERWISE           ; mtotodeb  += movim->Valor
            ENDCASE
            @ mlinha, 94 SAY movim->Valor PICTURE '9,999,999,999.99'
         ELSE
            mtotcre += movim->Valor
            @ mlinha, 111 SAY movim->Valor PICTURE '9,999,999,999.99'
         ENDIF
         mlinha += 1
         SKIP
      ENDDO
      SELECT clientes // retorna pra clientes, que é com o que este do while externo trabalha
      SKIP
   ENDDO   
   IF mlinha > 55
      DO CCCABP20 WITH mfolha, mdata, mlinha
   ENDIF
   mlinha += 1
   @ mlinha, 10 SAY 'TOTAL DE VENDAS A PRAZO = >'
   @ mlinha, 94 SAY mtotvap PICTURE '9,999,999,999.99'
   mlinha += 1
   @ mlinha, 10 SAY 'TOTAL DE VALES ....... = >'
   @ mlinha, 94 SAY mtotvales PICTURE '9,999,999,999.99'
   mlinha += 1
   @ mlinha, 10 SAY 'TOTAL DE RESTAURANTE  = >'
   @ mlinha, 94 SAY mtotrest PICTURE '9,999,999,999.99'
   mlinha += 1
   @ mlinha, 10 SAY 'TOTAL DE OUTROS DEBITOS = >'
   @ mlinha, 94 SAY mtotodeb PICTURE '9,999,999,999.99'
   mlinha += 1
   @ mlinha, 35 SAY 'T O T A L  = >'
   @ mlinha, 94 SAY mtotdeb PICTURE '9,999,999,999.99'
   @ mlinha, 111 SAY mtotcre PICTURE '9,999,999,999.99'

   @ pRow() + 1, 0 SAY Chr( 27 ) + Chr( 15 )

   EJECT

   @ 0, 0 SAY Chr( 27 ) + '@'
   SET DEVICE TO SCREEN
   SET PRINTER TO
   CLOSE ALL
   fErase( "temp1.ntx" )
   fErase( "temp2.ntx" )
   CLEAR
   RETURN

Duvida Indice NTX

Enviado: 17 Nov 2015 07:41
por Taciane
Olá, JoséQuintas

O Relatório não esta gerando nenhuma informação, declarei a variável mdata antes do GET inicial.

Comentei as linhas que apagam os ntx temporários para ver pelo DBU o que estava sendo gerado e esta tudo certo com eles.

No GET a data esta informada dd/mm/aa e no indice esta como dd/mm/aaaa.

Duvida Indice NTX

Enviado: 17 Nov 2015 08:09
por Jairo Maia
Olá Taciane,

No exemplo do José, após a linha CLEAR coloque estas linhas:

Código: Selecionar todos

Set Century On   // ano com 4 digitos
Set Date Brit    // data no formato dd/mm/yyyy
Altere também esta linha do GET:

Código: Selecionar todos

@ 10, 36 GET mdata PICTURE ' / / '
Para:

Código: Selecionar todos

@ 10, 36 GET mdata PICTURE '@D'
Veja se vai gerar o relatório.

Duvida Indice NTX

Enviado: 17 Nov 2015 11:49
por JoséQuintas
Realmente.
E o motivo é porque ao digitar 01/10/15:

Sem SET DATE BRITISH, isso pode ser interpretado como 10 de janeiro
Sem SET CENTURY ON, isso pode ser interpretado como ano 1915

Lembrando que na hora de conferir a informação do DBF convém reparar nisso também.

Duvida Indice NTX

Enviado: 17 Nov 2015 15:09
por asimoes
Completando:

Usando o SET EPOCH TO 1950

Determina a interpretação de valores de data sem dígitos do século.

? CtoD("05/27/1910") // Result: 05/27/1910
? CtoD("05/27/69") // Result: 05/27/1969
? CtoD("05/27/06") // Result: 05/27/2006

Duvida Indice NTX

Enviado: 17 Nov 2015 19:37
por Taciane
Olá,

Agora sim esta funcionando perfeitamente com os dois exemplos passados.

Fico muito grata Jairo Maia e JoséQuintas pelo apoio.

Duvida Indice NTX

Enviado: 16 Dez 2015 07:29
por Taciane
Olá,

Pensei em aposentar minha Fx1050 e passar minha USB HP1102W.

Olhando o tópico Harbour achei vários tópicos relacionados e estou testando, o relatório acima é gerado e enviado a impressora mas não imprime.

Neste link tem esta que me pareceu ser simples a dica do Itamar, mas não é. viewtopic.php?f=4&t=12841

Código: Selecionar todos

SET PRINTER TO seurelatorio.prn
SET DEVICE TO PRINTER
...
@ prow() ... say chr(27)+chr(14) ....
@ prow()+1,15 say 'DOCUMENTO AUXILIAR DE VENDA - v1.1'
...
SET DEVICE TO
SET PRINTER TO
...
Win_PrinteFileaw(cPrint,"seurelatorio.prn","DOC AUX VDA")
Pesquisando no Forum da HP achei este post do link abaixo mencionando " Esse produto é um equipamento que chamamos de Host Based. Não suporta o envio de linguagens de impressão nem fonts, pois todo gerenciamento de impressão é baseado no Host(PC)"

http://h30487.www3.hp.com/t5/Impress%C3 ... d-p/275648

Olhando a pasta HB32 testei os prg´s da pasta Crontib e estou muito pior que o Jairo no primeiro post do link acima.

Achei um post do sygecom com um prg ( PrintFileRAW() ) que seria apenas anexar ao arquivo hbp e pronto, mas para que foi feito xharbour, e não deu certo usando o Harbour 3.2

Bem era só para aliviar o "stress" depois vou criar um tópico na sala Harbour,

Duvida Indice NTX

Enviado: 16 Dez 2015 12:16
por Jairo Maia
Taciane escreveu:Olhando a pasta HB32 testei os prg´s da pasta Crontib e estou muito pior que o Jairo no primeiro post do link acima.
Taciane, nem tente concorrer comigo como pior iniciante em Harbour... Acho que você não vai conseguir... rs...
Taciane escreveu:[...] depois vou criar um tópico na sala Harbour
Muito bom... Esperamos você lá.

Duvida Indice NTX

Enviado: 16 Dez 2015 19:58
por JoséQuintas
Só pra adiantar, mas não faz parte do post sobre índice NTX.
O texto:
" Esse produto ...Não suporta o envio de linguagens de impressão nem fonts, pois todo gerenciamento de impressão é baseado no Host(PC)"
Numa tradução do "nem fontes":
A impressora é "analfabeta", ela não sabe o que é letra, ela só sabe desenhar.
Então não adianta o programa mandar texto, o programa precisa enviar tudo em forma de desenho.

A solução não tem a ver nem com Clipper e nem com NTX, então ficará para o post que mencionou fazer.