Falha na Impressão utilizando o NODOSIMP

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

locio
Usuário Nível 2
Usuário Nível 2
Mensagens: 98
Registrado em: 27 Out 2006 14:21

Falha na Impressão utilizando o NODOSIMP

Mensagem por locio »

Estou utilizando o NODOSIMP mas estou com alguns problemas:
- Não imprime a ultima linha da pagina nem a ultima linha do arquivo;
- Sempre pula uma pagina no final da impressão. Ex: se o relatorio tem 3 folhas ele imprime a folha 4 em branco.

Será que eu estou fazendo algo errado ou se já tem uma nova versão com as correções.

Atenciosamente,

José Malta Lócio
Editado pela última vez por Maligno em 01 Nov 2010 11:53, em um total de 1 vez.
Razão: O presente tópico foi movido da seção CA-Clipper, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Clipper.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

O NODOSIMP procura o CR+LF para entender que é o final da linha e enviar para a impressora. Por isso ele não esta imprimindo sua última linha da página.
Coloque uma linha em branco no final de cada página.

Soltar uma página em branco no final do relatório é um efeito colateral.
Se vc envia um FF/CHR(12) no final do arquivo, será pulada uma página. O NODOSIMP deve pular uma página no final do arquivo impresso tb.
Não fiz o teste ainda.

Espero ter ajudado. Boa sorte.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

para imprimir a ultima

@ prow()+1,01 say " "

para nao pular pagina retire o eject do final do programa.
"Um passo a frente, e já não estará mais no mesmo lugar..."
locio
Usuário Nível 2
Usuário Nível 2
Mensagens: 98
Registrado em: 27 Out 2006 14:21

Mensagem por locio »

Senhores,

Obrigado pela ajuda e desculpem a demora em responder. Estive offline por uns dias.

Cordialmente,

José Malta Lócio
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Re: Falha na Impressão utilizando o NODOSIMP

Mensagem por Josmar dos Santos »

Persistir em fazer essa pergunta novamente, porque no tópico anterior não tive resposta. Esse tópico já está muito grande !. Fiz uma pesquisa, e achei esse que envolve a pergunta que eu queria fazer: É característica do "NODOSIMP" saltar uma folha em branco, ou há solução para isso ??

Josmar
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Re: Falha na Impressão utilizando o NODOSIMP

Mensagem por billy1943 »

Como eu uso muito o NODOSIMP, apresento a minha forma de saltar página e evitar o relatado acima.
Logicamente a minha rotina de impressão abrange outras formas de apresentação de relatórios, tais como usar RTF para o WORD, gravar em SPOOL, apresentação na tela. Mas vai abaixo a forma para LPT1 ou USB via NODOSIMP.

Definir antes como será feita a impressão:
1 - Impressão na LPT1 direta
2 - Impressão pelo NODOSIMP na impressora USB
colocar esse valor na variável modo
***************************************************
Definir também quantos caracteres por linha terá o relatório, se for usar o NODOSIMP
80 -> colocar 60
Ppara os outros valores ir aumentando o valor para 65, ....
Teste de acordo com a sua impressora para ocupar o máximo possível do formulário e economizar papel
Colocar esse valor na variável total_linhas
*********************************************************************
Caso for usar o NODOSIMP definir também o arquivo a ser usado pelo SET PRINTER TO
De-lhe o nome de REL, por exemplo.
*************************************************************************

Código: Selecionar todos

setprc(0,0)  // zera linha e coluna
use arqx    // arquivo a ser listado
go top

do while ! eof()

    if prow() < 5
       cabecalho()    // imprimir cabeçalho do relatório
    endif

    @ prow()+1,  1 say  ....
    @ prow(),    10 say ....
   
    dbskip()           // avança no arquivo

    if prow() >  total_linhas         // definir esta variável pela quantidade de linhas que o NODOSIMP poderá
                                                // imprimir em função da quantidade de caracteres = padrão 60 para 10 CPI
       [b] avanc_pag(modo)[/b]
  
    endif

enddo

.....
[b]fim_rela[/b](modo,l[b]imite)[/b]   // limite = usar os valores aceitos pelo NODOSIMP que são 80, 96, 120, 140 e 160 de                           
                                              // acordo com cada relatório a ser impresso

********************************
* Rotinas auxiliares
*******************************

PROCEDURE [b]avanc_pag(modo)[/b]
if  modo == 1   // [b]LPT1[/b]
    eject [b]
else                 //[/b] USB
     @ prow()+1,0 say space(1)  // descarrega a última linha ainda sem avanço
     eject                                 // faz o salto de formulário e para na próxima folha que poderá ser ou não 
                                             // impressa, dependendo do do while considerar EOF() ou não
endif

return .t.

PROCEDURE [b]fim_rela[/b](modo,tamanho)
local telin := savescreen()
if modo == 1 // LPT1 direto
   avanc_pag() //
   @ 0,0 say space(1)
else
   @ prow(),pcol() say chr(13) //
endif

set printer on

set console on
set printer to
set device to screen
set cursor on
set printer off

if modo == 1   // tratamento apenas para o NODOSIMP
   if tamanho == 80
      run nodosimp &rel. 80 /pre/sel/ver
   elseif tamanho == 96
      run nodosimp &rel. 96 /pre/sel/ver
   elseif tamanho == 120
      run nodosimp &rel. 120 /pre/sel/ver/apa/mar9
   elseif tamanho == 140
      run nodosimp &rel. 120 /pre/sel/ver/apa/mar5
   elseif tamanho == 160
      run nodosimp &rel. 160 /pre/sel/ver/apa/mar15
   endif
   msg_tecla("Tecle algo para continuar no sistema.")
   run del &rel.
endif
restscreen(,,,,telin)
Editado pela última vez por Maligno em 01 Nov 2010 11:52, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder