En casos anteriores he solicitado su ayuda para solucionar un problema que tengo con un programa hecho en VB6. Es un programa para procesar las ventas de una tienda de comida rápida hecho en donde trabajo allá por el 2000, creo, pero lo hicieron para que funcionara exclusivamente en una impresora de tipo punto de venta SP200 de Star Micronics. Gracias a su ayuda he resuelto varios enredos en el código, pero el problema que tengo es que no puedo mandar a imprimir en otra impresora.
Analizando el código tengo lo siguiente (esto es una forma):
Código:
Son tres opciones en el sistema para imprimir, similares a la de arriba. Si se dan cuenta todas mandan a una función llamada "MandarAminiPrinter", todas las que dicen "StringXXXXX..." son configuraciones de como saldría la impresión (formato, acomodo, etc). Private Sub btnImprimir_Click() ' NoPreguntarFiltro = True ' GenerarReporte ' NoPreguntarFiltro = False Select Case cboReporte.Text Case "Ventas por pedido" MandarAminiPrinter StringImpresionReporteVentas() Case "Ventas por forma de pago" MandarAminiPrinter StringImpresionReporteVentasFormaPago Case "Ventas por Vendedor" MandarAminiPrinter StringImpresionReporteVentasVendedor Case "Ventas por Producto" MandarAminiPrinter StringImpresionReporteVentasProducto Case "Ventas a Detalle" MandarAminiPrinter StringImpresionReporteVentasDetalle Case "Resumen de ventas por forma de pago" MandarAminiPrinter StringImpresionResumenVentasFormaPago Case "Resumen de ventas por Vendedor" MandarAminiPrinter StringImpresionResumenVentasVendedor Case "Resumen de ventas por Producto" MandarAminiPrinter StringImpresionResumenVentasProducto End Select End Sub
La opción de MandarAminiPrinter es la siguiente (está definida como un módulo):
Código:
He encontrado opciones de impresión por la web y en este foro, y las he tratado de implementar en este último módulo pero cuando mando la impresión, sale la hoja en blanco. Public Sub MandarAminiPrinter(texto As String, Optional Preview As Boolean = True) Dim tempstr As String Dim b() As Byte Dim n As Integer On Local Error Resume Next If Preview Then Dim f As New frmTicketPreview Load f f.texto = texto f.Show vbModal Exit Sub End If If Dir(App.Path & "\sp200.dos") <> "" Then n = FreeFile Open App.Path & "\sp200.dos" For Binary As n tempstr = String(LOF(n), " ") Get #n, , tempstr Close n texto = tempstr & texto Else texto = Chr(&H1B) & Chr(&H40) & texto End If 'If pref("ImprimirDOS") Then b = LoadResData(101, "CUSTOM") n = FreeFile If Dir(App.Path & "\bat.bat.pif") <> "" Then FileCopy App.Path & "\bat.bat.pif", App.Path & "\b.pif" Else Kill "b.pif" If Err Then Err.Clear Open App.Path & "\b.pif" For Binary As n Put #n, , b Close If Err Then Err.Clear End If Debug.Print "len del texto a imprimir: "; Len(texto) CrearArchivoTextoImpresion texto Kill "C:\bat.bat" If Err Then Err.Clear Open "C:\bat.bat" For Binary As n Put #n, , "copy """ & App.Path & "\temp.tmp"" lpt1:" Close If Err Then MsgBox "Hipocaja no pudo escribir un archivo temporal de impresión. Cierre los archivos que esté utilizando, y si el problema persiste, reinicie su computadora. Hipocaja intentará mandar la impresión correctamente.", vbCritical, Titulo_Largo Err.Clear End If Shell App.Path & "\b.pif", vbHide ' DoEvents ' Kill App.Path & "\temp.tmp" ' Kill "c:\bat.bat" ' Kill App.Path & "\b.pif" 'Else ' Printer.NewPage ' Printer.print ' Printer.EndDoc 'End If End Sub
Les soy sincero... no he podido solucionar este problema y espero que alguien pudiera apoyarme, no soy muy bueno en VB y lo que he corregido ha sido sobre la marcha y gracias a su ayuda en otros post. Espero y alguien pueda ayudarme.
Saludos y ante todo agradezco sus comentarios.