Problemas de impresión en Matricial y Térmica

Cómo están:
Tengo un problema y espero poder obtener su ayuda urgentemente.
Tengo una aplicación que me permite enviar un documento de venta a dos tipos de impresoras diferentes instaladas en la misma máquina.
Los documentos (ejem: Boleta y Factura) están diseñadas en Crystal Report 8.0, mi aplicación está desarrollada en Visual Basic 6.0 y la base de datos en SQL Server 2000.
El código es el siguiente, después de obtener la clase de documento (boleta o factura) y su respectiva impresora guardada en la base de datos:
/* Utilizo el objeto Printer para obtener el nombre del controlador y el puerto y asignarle al objeto de Crystal (crptInforme) */
For Each X In Printers
   If X.DeviceName = EsNulo(rsImpresoras!NomImpresora, "") Then
      With crptInforme
         .PrinterDriver = X.DriverName
         .PrinterName = X.DeviceName
         .PrinterPort = X.port
      End With
      'Cambiamos la impresora por defecto para mantener márgenes
      SetDefaultPrinter X.DeviceName, X.DriverName, X.port
      EstablecerImpresoraCRpt = True
      Exit Function
   End If
Next X

/* Necesariamente utilizo estas APIs para que los márgenes de los documentos no se vean afectados al cambio de impresoras. Con esto predetermino la impresora seleccionada*/
Public Sub SetDefaultPrinter(ByVal PrinterName As String, ByVal DriverName As String, ByVal PrinterPort As String)
   Dim DeviceLine As String
   Dim r As Long
   Dim l As Long
   DeviceLine = PrinterName & "," & DriverName & "," & PrinterPort
   r = WriteProfileString("windows", "Device", DeviceLine)
   l = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, "windows")
End Sub

Bueno, el problema está que en algún momento al realizar el cambio de impresoras, ésta no cambia a predeterminada y entonces el documento se envía en la otra impresora y sale totalmente distinta. A veces se cuelga la computadora. Otras veces imprime hasta la mitad, etc.
Quisiera saber si es necesario predeterminar la impresora (utilizando estas APIs) para que los márgenes de los papeles no cambien, o habrá alguna otra forma, ¿tal vez sin utilizarlas?
Y qué pasaría con los archivos en cola en una y otra impresora. ¿Se descuadran los márgenes al momento de imprimir sus respectivos documentos ya que no está predeterminada una de sus impresoras?
He notado también algunas mejoras en Crystal Report 8.5, donde se le puede especificar el tamaño del papel en el control, lo que no se hace en Crystal Report 8.0.
Le agradecería de antemano las posibles respuestas.
{"lat":-6.75189646484337,"lng":-79.8486328125}

1 respuesta

Respuesta
1
Bueno mi experiencia con crystalReports es desde .NET no con VB6, pero yo no he visto que hay que predeterminar ña impresora para pasarle el paremetro de la impresora a CR, ¿ya has probado pasando solo la impresora al momento de la impresión?
Con respecto a la cola de impresión no se modifica a menos que se especifique la prioridad al momento de enviar la impresión, y esto no cancela nada solo espera que termine la impresión que esta en ejecución y luego se imprime la enviada pro nosotros si le colocamos prioridad.
Con respecto a los tamaños y margenes de las impresiones no he tenido problemas con eso después de haberlos corregido o especificado y probado en CR.
Sí, ya he probado pasando la impresora al momento de imprimir ya que trabajo con dos impresoras, una para cada documento.
De repente funciona en las nuevas versiones de basic y crysta reports.
De todas maneras, le agradezco la ayuda.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas