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

He estado trabajado ultimamente sobre todo el código (otra vez) y ya logré algo. Como al inicio, todo me lleva de regreso al módulo de impresión. Lo he modificado y quedo de la siguiente manera:

Módulo de impresión:

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 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
          
End Sub
Módulo para crear archivo de texto:

Código:
Private Sub CrearArchivoTextoImpresion(texto As String)
    Dim n As Integer
    On Local Error Resume Next
    
    Kill App.Path & "\temp.tmp"
    If Err Then Err.Clear
    n = FreeFile
    Open App.Path & "\temp.tmp" For Binary As n
        Put #n, , texto
    Close
    If Err Then
        Debug.Print Err.Number, Err.Description
        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
End Sub
Ahora les explicó como funcionó y que falta:

1. Al ejecutar el programa y mandar una impresión, abre una ventana de vista previa del ticket,
2. Se genera un archivo de texto temporal, el cual se guarda en una carpeta (Si lo hace, si funciona),
3. En la vista previa hay un botón de impresión, se le da click,
4. Abre un enlace a MS-DOS y lo cierra inmediatamente (el archivo queda cargado)
5. La impresión queda cargada en un archivo por lotes *.bat

Aquí emíeza lo interesante: Al parecer no se imprime el ticket, no lo manda directamente a la impresora, pero queda cargado en el archivo *.bat, si yo le doy doble click a ese archivo, manda la impresión como debe ser, pero esto sólo desde la carpeta donde esta guardado.

El problema que veo es que no se imprime directamente, solo queda cargado, viendo el código, alguien sabe que me está fallando todavía, ¿alguién podría ayudarme con esto?

De antemano les agradezco su ayuda. Saludos.