¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como fazer com que o SelectPrinter funcione em Tarefas Agendadas do Windows com VB 6.0 e CR 8.5

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

Estou usando VB 6.0 e CR 8.5 (através da biblioteca CRAXDRT, não é uma opção atualizar neste momento).

Este código

Report.SelectPrinter "winspool", strPrinter, "Ne00:"

não funciona se o programa é executado através de Tarefas Programadas do Windows. Funciona bem quando os usuários executam o programa de forma interativa. Não é gerado nenhum erro, o relatório simplesmente não é impresso. A variável strPrinter contém um nome de impressora de rede válido, por exemplo "
srvprxxxx\pr3456789"

Qualquer sugestão/coisas para tentar fazer o SelectPrinter funcionar quando a aplicação está sendo executada como Tarefas Programadas seria de grande ajuda.

Isso é o que já tentei.

Usar a biblioteca CRPEAuto em seu lugar. Adivinha só, tudo funciona bem. Eu mudaria para a biblioteca CRPEAuto, mas infelizmente não suporta parâmetros de relatório com valores múltiplos. Não há um método CRPEAuto.ParameterFieldDefinition.AddCurrentValue como no CRAXDRT.

Se você conhece uma maneira de passar múltiplos valores de parâmetros de relatório usando a biblioteca CRPEAuto, eu ficaria agradecido.

Também utilizei as funções de API no crpe32.dll diretamente. Novamente, minha pequena aplicação de teste funcionou bem, mas infelizmente essa API não é uma opção porque perderia a funcionalidade existente de nossas dll internas que já estão em produção.

É possível obter o "PrintJob #" (necessário para as funções de API CRPE32) do objeto de Relatório CRAXDRT?

Parece que estou em um beco sem saída. Não importa qual biblioteca/método eu tente usar, falha em algum ponto.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Isso:

Apenas uma observação, se eu estiver conectado ao Windows e iniciar a Tarefa Agendada (a conta "Executar como" não é a minha conta), tudo funciona bem.

pode ser uma boa pista. Pode ser que a conta sob a qual o aplicativo está sendo executado tenha as permissões corretas, mas a conta que não funciona não consiga ver as impressoras. A ferramenta Process Monitor disponível pela MS pode determinar se esse é o caso. Procure por qualquer mensagem de "acesso negado", seja a pastas, arquivos ou entradas de registro. O ProcMon pode ser baixado em:

http://www.microsoft.com/technet/sysinternals/Utilities/SysinternalsSuite.mspx

Ludek

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
øSignifica que o aplicativo criado em VB 6 funciona como um "exe de desktop" (o usuário clica em um botão de impressão e o aplicativo imprime), mas uma vez que o programa a aplicação nada acontece? 

Sim. Basicamente, à noite, o Agendador de Tarefas executa o mesmo aplicativo que os usuários executam durante o dia. Apenas usa argumentos de linha de comando para indicar ao aplicativo que "execute o processo A ou B ou C, etc.". Um processo abre o relatório apropriado, configura um ou dois parâmetros, seleciona uma impressora de rede e imprime. Configurar, selecionar, imprimir são repetidos várias vezes no mesmo relatório. Por exemplo, executar este relatório para o departamento A e imprimi-lo na impressora X. Execute-o novamente para o departamento B e imprima-o na impressora Z.

Apenas um comentário, se estou conectado ao Windows e inicio a Tarefa Agendada (sua conta de "Executar como" não é minha conta), tudo funciona bem.

Obrigado pelas suas sugestões. Vou testá-las e informarei os resultados.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Aproximando.

1) Foi adicionada uma impressora padrão à conta que executa as tarefas programadas.

2) O código SelectPrinter foi comentado.

3) A tarefa foi executada. Sucesso!

4) Descomente o código SelectPrinter.

5) A tarefa foi executada novamente, mas foi impressa na impressora padrão. Pelo menos agora estamos obtendo resultados.

Imprima DriverName, PortName e PrinterName em um arquivo de texto antes e depois de chamar SelectPrinter. Aqui estão os resultados. A linha B4 mostra a impressora padrão.

B4 Select Printer winspool Ne00:
xxxxxxx\yyyy

Após Select Printer

Editado por: bruce vde em 18 de setembro de 2008 às 21:32

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Todas as tecnologias que você menciona são bastante antigas e obsoletas, inclusive o RDC... No entanto, eu gostaria de ter uma confirmação. Quando você diz:

"...não funciona se o programa é executado através das Tarefas Agendadas do Windows. Funciona bem quando os usuários executam

o programa de forma interativa."

Você quer dizer que o aplicativo criado em VB 6 funciona como um "exe de desktop" (o usuário clica em um botão de impressão e o aplicativo imprime), mas uma vez que programam o aplicativo nada acontece?

Se for o caso, certifique-se de que a impressora seja visível para as Tarefas Agendadas do Windows. Você pode tentar com um aplicativo VB simples que não use CR, mas imprima um texto simples.

Como teste, tente não selecionar uma impressora. Deixe o relatório ser impresso em uma impressora padrão. Isso funciona?

Por último, certifique-se de ter as últimas atualizações para o CR 8.5. Você pode baixá-las aqui:

https://smpdl.sap-ag.de/~sapidp/012002523100005986522008E/cr85devwin_en.zip

Ludek

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?