Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2009, 09:05
Avatar de Middrel
Middrel
 
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Apoyo con un programa en VB6

Hola, buenos días...

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:
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
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).

La opción de MandarAminiPrinter es la siguiente (está definida como un módulo):

Código:
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
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.

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.