Página 1 de 2

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 01:01
por Paulo Pereira
Ola
Num cliente que tenho, rede windows, servidor server 2003,
sistema em clipper 5.2e, compilado com blinker
o sistema só imprime, na LPT1 ou gera arquivo apenas quando o usuario sai do sistema.imaginem o inconveniente...
porque isso ?

O comando é o classico
set device to print
set print to LPT1

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 01:20
por alxsts
Olá!

Você está fechando o arquivo de impressão? Após a última linha impressa, emita os comandos:

Código: Selecionar todos

EJECT
SET PRINTER TO

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 08:06
por Eolo
Só precisa do SET PRINTER TO pra "terminar" a impressão.
O EJECT, só se for necessário ejetar o papel.

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 13:32
por Clipper
Prezado Colega

Outra mudança que resolve o problema é modificar no registro do Windows.

Entre no editor de registro do Windows - REGEDIT
Procure pelo valor LPT_TIMEOUT
Mude o dado do valor de 15 para 1

Continue a busca com F3 e vá alterando até que chegue ao final do registro.

Até logo.

Marcelo

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 20:19
por Paulo Pereira
Obrigado a todos
o set printer to , resolveu..

Só imprime quando sai do sistema

Enviado: 11 Abr 2012 20:39
por Pablo César
Paulo Pereira escreveu:o set printer to , resolveu..
Mas aconselho também a executar a indicação do Marcelo para ajustar o LPT_TIMEOUT.

Só imprime quando sai do sistema

Enviado: 12 Abr 2012 16:59
por Eolo
O TIMEOUT também funciona, mas é necessário apenas se o programa em DOS não tiver um comando para "avisar" ao SO que o trabalho de impressão terminou. Só que o Clipper tem esse comando, e ele é o SET PRINTER TO.

Quando uma linguagem NÃO tem um comando como este (ou ele é omitido), aí entra o TIMEOUT, ou seja: como o WIndows não sabe se um determinado trabalho de impressão já acabou, ele fica esperando o tempo definido em TIMEOUT. Passado esse tempo, nada acontecendo, ele "assume" que a coisa terminou e inicia a impressão.

Porque a impressão só é iniciada quando se sai do programa? Bem, quando o programa é terminado, todos os respectivos handles são fechados pelo Windows, incluindo o da porta da impressora (é exatamente o que o SET PRINTER TO faz), aí o Windows sabe que o trabalho de impressão foi terminado e inicia a impressão imediatamente.

Fonte: http://www.printfil.com/article/slow-do ... indows.htm. Está em inglês mas é só usar um tradutor.

Só imprime quando sai do sistema

Enviado: 12 Abr 2012 18:21
por Clipper
Trocando em miúdos significa que...

Se tem o fonte. Use o SET PRINTER TO

Se não tiver. Altere o LPT_TIMEOUT

Até logo.

Marcelo

Só imprime quando sai do sistema

Enviado: 13 Abr 2012 09:28
por Eolo
O Paulo Pereira não mencionou "falta dos fontes", então o SET PRINTER TO é a resposta ao problema levantado no post.
Aliás, foi o que ele aplicou. E funcionou.

Só imprime quando sai do sistema

Enviado: 13 Abr 2012 10:35
por Pablo César
Sim, já sabemos, aliás desde o começo já desconfiávamos que o problema estava em fechar o relatório. Mas como disse eu anteriormente, "também" seria conveniente acertar o TIMEOUT, justamente para outros casos. Mas que seja algo tão relevante. Por isso, eu sou sempre a favor de criar arquivo de impressão antes, salvo em algumas situações que preciso imprimir em modo gráfico. Mas como estamos na seção Clipper, deduzimos que não é o caso...

Só imprime quando sai do sistema

Enviado: 13 Abr 2012 19:45
por Eolo
Mas como disse eu anteriormente, "também" seria conveniente acertar o TIMEOUT, justamente para outros casos. Mas que seja algo tão relevante.
Pablo, desculpe, mas a pergunta do Paulo Pereira foi específica, então a resposta não deveria ser na mesma linha, pra não virar desvio de assunto? Ele não colocou o SET PRINTER TO (porque não sabia), tava dando problema, agora ele colocou e tá resolvido, então o que são esses "outros casos"? Alterar o registro do ruindows pra "outros casos"? Desculpe, não entendi porque "seria conveniente também acertar o Timeout" para o Paulo Pereira.

O Alexandre Santos, lá no começo, já matou o problema. Exceto pelo EJECT a mais... :-)

Só imprime quando sai do sistema

Enviado: 13 Abr 2012 20:17
por Pablo César
Do jeito que está se abordando este assunto do TIME OUT, sim está sendo desvio de assunto. Porque estaríamos aprofundando no assunto. Eu apenas complementei que seria interessante, não para esse caso em que ele não estava imprimindo. Eu apenas quis complementar para outros casos em que muitos dos programadores em Clipper ainda imprimem diretamente à impressora, aliás a porta paralela da impressora. Aí sim a questão de reduzir o tempo do TIME OUT se justificaria. Então, o conselho não foi somente pro Paulo e sim para todos aqueles que ainda imprimem direto, não como neste caso do Paulo que está direcionando a saída de impressão para arquivo.
Lembra quando imprimíamos no Win98, não demorava quase nada para começar a sair a impressão... bem quando saiu o XP já notava-se a demora.
Alterar o registro do ruindows pra "outros casos"?
Sim, por quê não ? Alterar o registro do Windows é muitas vezes necessário. Aqui no fórum foram abordado muitas vezes essa questão da demora na impressão e com respeito ao acesso de dbfs. Eu até disponibilizei um utilitário que altera o registro nesses pontos, considerando vários tópico que indicavam a prática. Um deles é do mestre Rochinha. Veja aqui para download:
https://pctoledo.org/forum/fileba ... t=s&page=1

Só imprime quando sai do sistema

Enviado: 13 Abr 2012 20:24
por Eolo
Ah, agora ficou perfeitamente claro.
É que eu não tinha atentado ao título do post, "Só imprime quando sai do sistema".
Agora entendi.

Só imprime quando sai do sistema

Enviado: 14 Abr 2012 00:36
por Clipper
Prezados Colegas

Eu complementei a resposta foi pensando nos futuros colegas que poderão vir a precisar, talvez alguns deles não tenham os fontes ou mesmo nos casos que se tenha os fontes mas eles não estejam disponíveis no momento. Sendo assim o post fica mais completo e serve para ambos os casos. Além é claro de enriquecer didaticamente o fórum e os colegas.

Até logo.

Marcelo

Só imprime quando sai do sistema

Enviado: 14 Abr 2012 20:41
por Eolo
Marcelo Clipper, desculpe se me expressei mal, entendo a sua atitude e a respeito, mas meu ponto é o seguinte: o Paulo Pereira foi específico em sua pergunta, então porque não dar a resposta específica?

O título do post é "Só imprime quando sai do sistema", então qual a resposta específica do Clipper pra isso? O Alexandre Alxsts sacou o problema e sugeriu a resposta certa, matou a pau: SET PRINTER TO (exceção ao EJECT a mais). Tanto que resolveu o problema do Paulo Pereira. Fim.

A sugestão que vc deu, embora de alguma forma também resolva o problema, pode levar a crer que o Clipper não tem resposta apropriada pro problema e a saída é mexer no registro do Windows. Será que o Paulo Pereira e outros não poderiam ser induzidos a achar que essa sua sugestão era também necessária, em conjunto ou como alternativa ao SET PRINTER TO? Na minha experiência, não é. Eu nunca mexi no registro do Windows em nenhum cliente. Imagina numa rede com algumas dezenas de PCs, vc ter que mexer no registro de todos eles só porque faltou (ou não) o SET PRINTER TO...

Se amanhã um outro colega entrar no post e dizer que não tem os fontes pra incluir o SET PRINTER TO, aí sim eu concordo que caberia uma intervenção como a que vc fez.

É isso. Desculpe novamente se me expressei mal. Abraço!