Impressão de NF em rede lenta!
Moderador: Moderadores
Impressão de NF em rede lenta!
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?
Os demais relatorios esta normal....será erro de programacao?
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
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!
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!
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!
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!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Pegando carona na citação do Maligno, diria que:
Procure filtrar um pouco as coisas antes de imprimir;
aquele laço
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.
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 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
MySQL c/ SQLRDD
HwGui + GTWVG
Boa dica, como sempre. Mas lembre-se de que o colega comentou que os demais relatórios imprimem normalmente.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.
[]'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!
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!
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 .
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.Mas e se os demais relatorios já tiverem o SET PRINTER TO ?
[]'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!
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!
O debugger deve aparecer no script de linkedição como FILE, apesar de ser um arquivo do tipo LIB.Depois, para executar o programa, digito: CLD /43/50 /S inicio.exe.
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!
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!



