¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo hacer que SelectPrinter funcione en Tareas Programadas de Windows con VB 6.0 y CR 8.5

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

Estoy usando VB 6.0 y CR 8.5 (a través de la biblioteca CRAXDRT, no es una opción actualizar en este momento).

Este código

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

no funciona si el programa se ejecuta a través de Tareas Programadas de Windows. Funciona bien cuando los usuarios ejecutan el programa de forma interactiva. No se genera ningún error, el informe simplemente no se imprime. La variable strPrinter contiene un nombre de impresora de red válido, por ejemplo "
srvprxxxx\pr3456789"

Cualquier sugerencia/cosas para intentar hacer que SelectPrinter funcione cuando la aplicación se está ejecutando como Tareas Programadas sería de gran ayuda.

Esto es lo que ya he intentado.

Usar la biblioteca CRPEAuto en su lugar. Adivina qué, todo funciona bien. Me cambiaría a la biblioteca CRPEAuto, pero desafortunadamente no admite parámetros de informe con valores múltiples. No hay un método CRPEAuto.ParameterFieldDefinition.AddCurrentValue como en CRAXDRT.

Si conoces una forma de pasar múltiples valores de parámetros de informe usando la biblioteca CRPEAuto, te estaría agradecido.

También utilicé las funciones de API en el crpe32.dll directamente. Nuevamente, mi pequeña aplicación de prueba funcionó bien, pero desafortunadamente esta API no es una opción porque perdería la funcionalidad existente de nuestras dll internas que ya están en producción.

¿Es posible obtener el "PrintJob #" (requerido por las funciones de API CRPE32) del objeto de Informe CRAXDRT?

Parece que estoy en una situación de callejón sin salida. No importa qué biblioteca/método intente utilizar, falla en algún punto.

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

4 Respuestas

0
Cargando...

Esto:

Solo una nota, si estoy conectado a Windows y inicio la Tarea Programada (la cuenta de "Ejecutar como" no es mi cuenta) todo funciona bien.

puede ser una buena pista. Puede ser que la cuenta bajo la cual la aplicación funciona tenga los permisos correctos, pero la cuenta que no funciona no vea las impresoras. La utilidad Process Monitor disponible de MS puede determinar si ese es el caso. Busca cualquier mensaje de "acceso denegado", ya sea a carpetas, archivos o entradas de registro. ProcMon se puede descargar desde aquí:

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 la aplicación creada en VB 6 funciona como un "exe de escritorio" (el usuario hace clic en un botón de impresión y la aplicación imprime), pero una vez que programa la aplicación no sucede nada? 

Sí. Básicamente, por la noche, el Programador de tareas ejecuta la misma aplicación que los usuarios ejecutan durante el día. Simplemente utiliza argumentos de línea de comandos para indicarle a la aplicación que "ejecute el proceso A o B o C, etc.". Un proceso abre el informe adecuado, establece uno o dos parámetros, selecciona una impresora de red e imprime. Establecer, seleccionar, imprimir se repiten varias veces en el mismo informe. Por ejemplo, ejecutar este informe para el departamento A e imprimirlo en la impresora X. Ejecutarlo nuevamente para el departamento B e imprimirlo en la impresora Z.

Solo un comentario, si estoy conectado a Windows y inicio la Tarea Programada (su cuenta de "Ejecutar como" no es mi cuenta), todo funciona bien.

Gracias por tus sugerencias. Voy a probarlas y te informaré los resultados.

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

Acercándonos.

1) Se agregó una impresora predeterminada a la cuenta que ejecuta las tareas programadas.

2) Se comentó el código SelectPrinter.

3) Se ejecutó la tarea. ¡Éxito!

4) Descomentar el código Select Printer.

5) Se ejecutó la tarea nuevamente, pero se imprimió en la impresora predeterminada. Al menos ahora estamos obteniendo resultados.

Imprimí DriverName, PortName y PrinterName en un archivo de texto antes y después de llamar a SelectPrinter. Aquí están los resultados. La línea B4 muestra la impresora predeterminada.

B4 Select Printer winspool Ne00:
xxxxxxx\yyyy

Aft Select Printer

Editado por: bruce vde el 18 de septiembre de 2008 a las 9:32 PM

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

Todos las tecnologías que mencionas son bastante antiguas y obsoletas, incluso el RDC... No obstante, me gustaría tener una confirmación. Cuando dices:

"...no funciona si el programa se ejecuta a través de las Tareas Programadas de Windows. Funciona bien cuando los usuarios ejecutan

el programa de forma interactiva."

¿Quieres decir que la aplicación creada en VB 6 funciona como un "exe de escritorio" (el usuario hace clic en un botón de impresión y la aplicación imprime), pero una vez que programan la aplicación no sucede nada?

Si ese es el caso, asegúrate de que la impresora sea visible para las Tareas Programadas de Windows. Puedes intentar con una aplicación VB simple que no use CR, pero imprima un texto simple (?).

Como prueba, intenta no seleccionar una impresora. Deja que el informe se imprima en una impresora predeterminada. ¿Esto funciona?

Por último, asegúrate de tener las últimas actualizaciones para CR 8.5. Puedes descargarlas desde aquí:

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?