Impressão de NF em rede lenta!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Impressão de NF em rede lenta!

Mensagem por ERCS123 »

Olá, tenho uma rede de 5 micros em XP e um servidor em XP também. Estou tento um problema na impressao da Nota Fiscal, depois que coloquei o sistema em rede. A nota começa a imprimir, quando chega na metade, a impressao para por alguns segundos, e logo em seguida volta a imprimir novamente.
Os demais relatorios esta normal....será erro de programacao?
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Não diria concerteza, mas na duvida, post sua rotina de impressão de NF, para nos dar uma olhada !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Código: Selecionar todos

      mens("Confirma o Impressao da Nota Fiscal (S/N)?")
      set color to b/b,B/B
      cresp:= Space(1)
      @ 23, 78 get Cresp picture "@!" valid cresp $ "SN"
      read
      if (cresp = "N")
         close databases
         return
       else
             if (LastKey() == 27)
                close databases
                return
             endif
      endif
      impress()
      goto top
      mens("Tecle <ENTER> p/ teste de Impressao...")  
             set device to print
           while .t.
                 m_dat1:=0    
                 m_dat2:=0    
                 m_dat3:=0    
                 m_dat4:=0    
                 m_dup1:=0
                 m_dup2:=0
                 m_dup3:=0
                 m_dup4:=0
                 m_dup01:=0
                 m_dup02:=0
                 m_dup03:=0
                 m_dup04:=0
              while .not. eof()
                 if pr1 > 0 .and. pr2=0 .and. pr3=0 .and. pr4=0
                     m_dat1:=emi+pr1         
                     m_dup1:=ttt   
                     m_dup01:=m_dup1
                     m_dat2:=""    
                     m_dat3:=""  
                     m_dat4:=""  
                     m_dup02:=""
                     m_dup03:=""
                     m_dup04:=""
                     m_dup2:=""
                     m_dup3:=""
                     m_dup4:=""
                     m_apr:=""  
                 elseif pr1 > 0 .and. pr2 > 0 .and. pr3=0 .and. pr4=0    
                     m_dat1:=emi+pr1   
                     m_dat2:=emi+pr2   
                     m_dup2:=ttt/2   
                     m_dup01:=m_dup2
                     m_dup02:=m_dup2
                     m_dat3:=""  
                     m_dat4:=""  
                     m_dup03:=""
                     m_dup04:=""
                     m_dup3:=""
                     m_dup4:=""
                     m_apr:=""  
                 elseif pr1 > 0 .and. pr2 > 0 .and. pr3 > 0 .and. pr4=0    
                    m_dat1:=emi+pr1   
                    m_dat2:=emi+pr2   
                    m_dat3:=emi+pr3   
                    m_dup3:=ttt/3   
                    m_dup01:=m_dup3
                    m_dup02:=m_dup3
                    m_dup03:=m_dup3
                    m_dat4:=""  
                    m_dup04:=""                   
                    m_dup4:=""                   
                    m_apr:=""  
                 elseif pr1 > 0 .and. pr2 > 0 .and. pr3 > 0 .and. pr4>0    
                    m_dat1:=emi+pr1   
                    m_dat2:=emi+pr2   
                    m_dat3:=emi+pr3   
                    m_dat4:=emi+pr4   
                    m_dup4:=ttt/4   
                    m_dup01:=m_dup4
                    m_dup02:=m_dup4
                    m_dup03:=m_dup4
                    m_dup04:=m_dup4
                    m_apr:=""  
                 else
                     m_dat1:=""        
                     m_dup1:=""   
                     m_dup01:=""
                     m_dat2:=""    
                     m_dat3:=""  
                     m_dat4:=""  
                     m_dup02:=""
                     m_dup03:=""
                     m_dup04:=""
                     m_dup2:=""
                     m_dup3:=""
                     m_dup4:=""
                     m_apr:="APRESENTACAO"  
              endif           
                 if tip=="E"    
                   @ prow()+1,40 say chr(18)
                   @ prow()  ,08 say "."
                   @ prow()  ,57 say "."
                   inkey(0)  
                   @ prow()  ,08 say "."
                   @ prow()  ,57 say "."
                   @ prow()  ,08 say "."
                   inkey(0)  
                   @ prow()  ,58 say "X"
                 else
                   @ prow()+1,40 say chr(18)
                   @ prow()  ,08 say "."
                   @ prow()  ,51 say "."
                   inkey(0)  
                   @ prow()  ,08 say "."
                   @ prow()  ,51 say "."
                   @ prow()  ,08 say "."
                   inkey(0)  
                   @ prow()  ,51 say "X" 
              endif     
******ver este comando**********************
                set device to screen
********************************************
                mens("Tecle <ENTER> p/ Imprimir...")              
                INKEY(0)     
                mens("Aguarde IMPRIMINDO Notal Fiscal...")
****************************************
                set device to print
***************************************
                @ prow()+7,00 say nat pict "@!"
                @ prow()  ,23 say ope pict "#####"
                @ prow()+3,00 say emp pict "@!"
                @ prow()  ,43 say strzero(cod,4,0)
                @ prow()  ,48 say cgc pict "##.###.###/####-##"
                @ prow()  ,67 say emi pict "##/##/####"  
                @ prow()+2,00 say end pict "@!"   
                @ prow()  ,41 say bai pict "#################" 

                @ prow()  ,60 say chr(15)
                @ prow()  ,61 say cep pict "##.###-###" 
                @ prow()  ,67 say chr(18)

                @ prow()  ,67 say sai pict "##/##/####"      
                @ prow()+2,00 say cid pict "#########################"   
                @ prow()  ,45 say est pict "@!"   
                @ prow()  ,50 say ins //pict "999999999999999"   
                @ prow()  ,68 say tim pict "##:##"  
                @ prow()+1,08 say m_dat1 pict "##/##/####"      
                @ prow()  ,23 say m_dat2 pict "##/##/####"      
                @ prow()  ,38 say m_dat3 pict "##/##/####"      
                @ prow()  ,53 say m_dat4 pict "##/##/####"      
                @ prow()+1,04 say m_apr pict "@!"   
                @ prow()  ,09 say m_dup01 pict "@e 99,999.99" 
                @ prow()  ,24 say m_dup02 pict "@e 99,999.99" 
                @ prow()  ,39 say m_dup03 pict "@e 99,999.99" 
                @ prow()  ,54 say m_dup04 pict "@e 99,999.99"    

             if cno > 0 .and. cno1=0 .and. cno2=0 .and. cno3=0
                @ prow()+5,00 say strzero(cno,3,0)
                @ prow()  ,06 say not pict "@!"
                @ prow()  ,39 say uni pict "@!"
                @ prow()  ,42 say qtd pict "@e 9,999"
                @ prow()  ,47 say val pict "@e 9,999.99"
                @ prow()  ,54 say tot pict "@e 9,999,999.99"
                @ prow()+3,01 say " " 
                icms1:=0
                icms1:=icm
             elseif cno > 0 .and. cno1>0 .and. cno2=0 .and. cno3=0
                @ prow()+5,00 say strzero(cno,3,0)
                @ prow()  ,06 say not pict "@!"
                @ prow()  ,39 say uni pict "@!"
                @ prow()  ,42 say qtd pict "@e 9,999"
                @ prow()  ,47 say val pict "@e 9,999.99"
                @ prow()  ,54 say tot pict "@e 9,999,999.99"
                @ prow()+1,00 say strzero(cno1,3,0)
                @ prow()  ,06 say not1 pict "@!"
                @ prow()  ,39 say uni1 pict "@!"
                @ prow()  ,42 say qtd1 pict "@e 9,999"
                @ prow()  ,47 say val1 pict "@e 9,999.99"
                @ prow()  ,54 say tot1 pict "@e 9,999,999.99"
                 @ prow()+2,01 say " " 
                icms1:=0
                icms1:=icm
              elseif cno > 0 .and. cno1>0 .and. cno2>0 .and. cno3=0

                @ prow()+5,00 say strzero(cno,3,0)
                @ prow()  ,06 say not pict "@!"
                @ prow()  ,39 say uni pict "@!"
                @ prow()  ,42 say qtd pict "@e 9,999"
                @ prow()  ,47 say val pict "@e 9,999.99"
                @ prow()  ,54 say tot pict "@e 9,999,999.99"
                @ prow()+1,00 say strzero(cno1,3,0)
                @ prow()  ,06 say not1 pict "@!"
                @ prow()  ,39 say uni1 pict "@!"
                @ prow()  ,42 say qtd1 pict "@e 9,999"
                @ prow()  ,47 say val1 pict "@e 9,999.99"
                @ prow()  ,54 say tot1 pict "@e 9,999,999.99"
                 @ prow()+1,00 say strzero(cno2,3,0)
                @ prow()  ,06 say not2 pict "@!"
                @ prow()  ,39 say uni2 pict "@!"
                @ prow()  ,42 say qtd2 pict "@e 9,999"
                @ prow()  ,47 say val2 pict "@e 9,999.99"
                @ prow()  ,54 say tot2 pict "@e 9,999,999.99"
                @ prow()+1,01 say " " 
                icms1:=0
                icms1:=icm
              else
                @ prow()+5,00 say strzero(cno,3,0)
                @ prow()  ,06 say not pict "@!"
                @ prow()  ,39 say uni pict "@!"
                @ prow()  ,42 say qtd pict "@e 9,999"
                @ prow()  ,47 say val pict "@e 9,999.99"
                @ prow()  ,54 say tot pict "@e 9,999,999.99"
                @ prow()+1,00 say strzero(cno1,3,0)
                @ prow()  ,06 say not1 pict "@!"
                @ prow()  ,39 say uni1 pict "@!"
                @ prow()  ,42 say qtd1 pict "@e 9,999"
                @ prow()  ,47 say val1 pict "@e 9,999.99"
                @ prow()  ,54 say tot1 pict "@e 9,999,999.99"

                @ prow()+1,00 say strzero(cno2,3,0)
                @ prow()  ,06 say not2 pict "@!"
                @ prow()  ,39 say uni2 pict "@!"
                @ prow()  ,42 say qtd2 pict "@e 9,999"
                @ prow()  ,47 say val2 pict "@e 9,999.99"
                @ prow()  ,54 say tot2 pict "@e 9,999,999.99"
                @ prow()+1,00 say strzero(cno3,3,0)
                @ prow()  ,06 say not3 pict "@!"
                @ prow()  ,39 say uni3 pict "@!"
                @ prow()  ,42 say qtd3 pict "@e 9,999"
                @ prow()  ,47 say val3 pict "@e 9,999.99"
                @ prow()  ,54 say tot3 pict "@e 9,999,999.99"
                icms1:=0
             endif  

                @ prow()+15, 00 say chr(15)
                @ prow(),00 say "DOCUMENTO EMITIDO POR EPP OPTANTE PELO SIMPLES NACIONAL - NAO GERA DIREITO A CREDITO FISCAL ICMS E ISS"
                @ prow()+04, 00 say chr(18)
*               @ prow(),00 say m_tt11 pict "@e 999,999,999.99" 
 *              @ prow(),17 say aliq1 pict "@e 9,999,999.99"
                @ prow(),63 say ttt pict "@e 999,999,999.99" 
                @ prow()+2,63 say ttt pict "@e 999,999,999.99" 

                @ prow()+2,47 say fre pict "#"
                @ prow()+1,00 say tra pict "###############################"
                @ prow()+3,01 say vol pict "9999999"
                @ prow(),10 say esp pict "@!"
                @ prow(),22 say mar pict "@!"
                @ prow(),50 say peb pict "@e 999,999.99" 
                @ prow(),61 say "KG"       
                @ prow(),64 say pel pict "@e 999,999.99" 
                @ prow(),75 say "KG"
                @ prow()+4,01 say obs1 pict "@!"
                @ prow()+1,01 say obs2 pict "@!"
                @ prow()+1,01 say obs3 pict "@!"
                @ prow(),70 say chr(18)
               skip                         
              enddo 
               if eof() 
*                 @ 00,00 say chr(18)
                 set device to screen
                 dbcloseall() 
                 return  
              endif  
                  If LastKey() = 27
                      unloc()
                       loop
                  endif
            enddo
         enddo
      informa=0    
      close all
      release all 
      restscreen=(05,06,20,75,tecli)
      return 
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Se os demais relatórios imprimem nomalmente e a NF não, parece certo pensar que o problema está na forma como você programou a NF. Portanto, a solução é investigar essa parte do código. Use o debugger CLD e "separe" a parte onde começa a lentidão. A partir daí, com a causa da lentidão encontrada, tente melhorar o código. Se isso for possível, pois o gargalo pode ter origem estrutural e talvez nem compense mexer.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Olá Maligno....como faço para usar o debugger CLD? Preciso de uma explicacao passo a passo, pois sou novato.
Obrigado!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Veja o artigo https://pctoledo.org/forum/viewtopic.php?t=2246. Talvez ajude alguma coisa. O CLD, na verdade, se aprende usando. Mas, tendo alguma dúvida, volte ao assunto. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Pegando carona na citação do Maligno, diria que:
Procure filtrar um pouco as coisas antes de imprimir;
aquele laço

Código: Selecionar todos

if pr1 > 0 .and. pr2=0 .and. pr3=0 .and. pr4=0 
não teria como dar uma filtrada nisso antes.
De preferencia sem Set Filter, mas com set scope (caso 5.3)
O que quero dizer é que: me parece que vc imprime a partir de um banco de dados, talvez (e com certeza) o que vc esteja querendo imprimir não é todo conteudo do banco, talvez um numero de pedido ou algo assim. Sendo assim, experimente usar apenas o intervalo da tabela que lhe interessa. Com certeza a impressão vai ficar uma bala.
Espero ter ajudado.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Bom dia ERCS123 !

Se a logica da rotina de impressão estiver correta, tente colocar um SET PRINTER TO antes do SET DEVICE TO SCREEN. Em rede, talvez torne a impressão mais rápida.

Espero ter ajudado
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Se a logica da rotina de impressão estiver correta, tente colocar um SET PRINTER TO antes do SET DEVICE TO SCREEN. Em rede, talvez torne a impressão mais rápida.
Boa dica, como sempre. Mas lembre-se de que o colega comentou que os demais relatórios imprimem normalmente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Bom dia Maligno !

Mas e se os demais relatorios já tiverem o SET PRINTER TO ?

Nunca se sabe....
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Código: Selecionar todos

@echo off
del inicio.exe
del *.ovl
cls
@echo Inicio do Processo de COMPILACAO !!!
cls
if not exist cli0001.obj clipper cli0001 -q
if errorlevel 1 goto fim
ETC
ETC
cls
if not exist nota001.obj clipper nota001 -q /b  (COLOQUEI O /B no .prg do  relatorio) 
if errorlevel 1 goto fim
cls
if not exist bole001.obj clipper bole001 -q
if errorlevel 1 goto fim
cls
ETC
ETC
if not exist cheque01 clipper cheque01 -q 
if errorlevel 1 goto fim
cls
rtlink @ercs 
del *.~*
cls
inicio
cls
:fim


********* arquivo ERCS.LNK*********
file inicio

lib [b]cld[/b],clbc,clbcmat,relogio,super

beginarea
       section into fuc_001 file funcs       
       section into fat_001 file fat0001
       section into cli_001 file cli0001
       section into for_001 file for0001
       section into pro_001 file pro0001
       section into fin_001 file fin0001
       section into ven_001 file vend001
       section into uti_001 file uti0001       
       section into not_001 file nota001       
       section into bol_001 file bole001       
       section into est_001 file esto001       
       section into fih_001 file ficha01     
       section into rel_001 file rela001     
       section into rel_002 file rela002     
       section into tel_001 file tela001     
       section into che_001 file cheque01     
endarea

Depois, para executar o programa, digito: CLD /43/50 /S inicio.exe.

Quando chego na tela da impressao, aparece o codigo fonte, dai adiante não sei como fazer para rodar o sistema .
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Mas e se os demais relatorios já tiverem o SET PRINTER TO ?
Boa pergunta. Se os demais relatórios tem, imagino eu que a NF também tenha. Também imagino que o colega, antes de postar o problema, deve ter feito uma conferência no código. Mas, pode ter passado batido. Por isso que eu disse que sua foi muito boa, como sempre. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Depois, para executar o programa, digito: CLD /43/50 /S inicio.exe.
O debugger deve aparecer no script de linkedição como FILE, apesar de ser um arquivo do tipo LIB. :)

Ao executar o programa, enquanto o desgramado estiver rodando, pressione Alt+D para interromper a execução e abrir a tela do CLD. Se quiser que ele páre em determinado ponto, apenas acrescente um breakpoint inserindo uma chamada à função Alt+D antes do código que quer bisbilhotar.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder