VB6 printer
  • hola amigo yacosta gusto en saludarte tengo dudas con referente al objeto printer jamas lo he usado alguna recomendacion que o sugerencia. mi pregunta en concreta es sobre la impresion de tickets googleando encontre un tema aqui en el mismo foro http://poreltube.net/index.php?p=/discussion/949/problema-impresion-en-papel-ticket-vb6 tambien buscando en el foro de leandro http://leandroascierto.com/foro/index.php?topic=2417.msg13067#msg13067


    Ahora yo voy a utilizar el tuyo



    Private Sub Command1_Click()

    On Error GoTo Impresora

    Open "LPT1:" For Output As #1

    Print #1,

    Print #1, Tab(1); String(40, "=")
    Print #1, Tab((40 - Len("COMPROBANTE DE VENTA")) \ 2); "COMPROBANTE DE VENTA"
    Print #1, Tab(1); String(40, "=")

    If Option1.Value = True Then
    Print #1, Tab(1); "TICKET Nº: " & Val(txtNFactura.Text); Tab(40 - Len("TIPO : CONTADO")); "TIPO : CONTADO"
    Else
    Print #1, Tab(1); "TICKET Nº: " & Val(txtNFactura.Text); Tab(40 - Len("TIPO : CREDITO")); "TIPO : CREDITO"
    End If

    Print #1, Tab(1); "FECHA : " & Date; Tab(40 - Len("HORA : " & Time)); "HORA : " & Time

    Print #1, Tab(1); String(40, "-")

    Print #1, Tab(1); "R.U.C/C.I : " & txtCedula1.Text
    Print #1, Tab(1); "CLIENTE : " & txtNombre1.Text

    Print #1, Tab(1); String(40, "=")
    Print #1, Tab(1); "CANT"; Tab(6); "P R O D U C T O"; Tab(26); "I.V.A"; Tab(34); "SUBTOT"
    Print #1, Tab(1); String(40, "=")

    For i = 1 To LTicket.ListItems.Count
    Print #1, Tab(3 - Len(LTicket.ListItems(i).Text)); LTicket.ListItems(i).Text; Tab(6); Left(LTicket.ListItems(i).SubItems(1), 20); Tab(31 - Len(LTicket.ListItems(i).SubItems(2))); LTicket.ListItems(i).SubItems(2); Tab(40 - Len(Format(LTicket.ListItems(i).SubItems(3), "##,###"))); Format(LTicket.ListItems(i).SubItems(3), "##,###")
    End If

    Next i

    Print #1, Tab(1); String(40, "=")
    Print #1, Tab(15); "TOTAL : "; Tab(40 - Len(Format(CantidadTotal, "##,###"))); Format(CantidadTotal, "##,###")
    Print #1, Tab(16); "------------------------"

    Print #1, Tab(1); "Exenta : " & lblSubTotalExenta.Caption
    Print #1, Tab(1); "I.V.A 5% : " & lblIVA10.Caption
    Print #1, Tab(1); "I.V.A 10% : " & lblTotalIVA.Caption

    Print #1,
    Print #1, Tab((40 - Len("GRACIAS POR SU COMPRA!")) \ 2); "GRACIAS POR SU COMPRA!"

    For i = 1 To 10
    Print #1,
    Next i

    Close #1

    Impresora:

    Dim msgb

    msgb = MsgBox("Error Nº : [ " & Err.Number & " ]" & " " & Err.Description, vbOKCancel + vbInformation)

    End Sub



    Printer.Font = "Arial"
    Printer.FontSize = 7
    Printer.Print "Texto Cabecera"
    Printer.Print "Id. Tran: " & Dato1 & " " & Fecha.Value & " "
    Printer.Print "Telf: " & NumTelefonoUOtroDato
    Printer.Print " "
    Printer.FontBold = True
    Printer.Print " CANT ARTICULO P.UNID. TOTAL"
    Printer.FontBold = False

    For i = 1 To Grid1.Rows - 1
    Printer.Print _
    FormateoNumero(Format(Grid1.TextMatrix(i, 4), "#,##0")); _
    Tab(8); Left(Grid1.TextMatrix(i, 2), 28); _
    Tab(45); FormateoNumero(Format(Grid1.TextMatrix(i, 5), "#0.00")); _
    Tab(56); FormateoNumero(Format(Grid1.TextMatrix(i, 6), "#0.00"))

    TotalCaracteres = Len(Grid1.TextMatrix(i, 2))
    If Len(Grid1.TextMatrix(i, 2)) > 28 Then
    CadenaRestante = Mid(Grid1.TextMatrix(i, 2), 29, TotalCaracteres)
    Printer.Print Tab(8); Left(CadenaRestante, 28)
    End If
    Next i
    Printer.Print Tab(53); "-----------------------"
    Printer.Print Tab(52); FormateoNumero(LbTotal)

    Printer.EndDoc


    ahora jamas he utilizado el objeto printer ya que solo utilizado datareport y reportmanager y con la factura electronica menos pero ahora viene aqui mi duda en el metodo de ENTER hay que especificar el puerto y en el tuyo no amigo. me interesa mas el tu metodo, que tengo que tomar en consideracion para cada impresora?
  • 12 Comentarios sorted by
  • por en mi buzon de mensajes encontre tu funcion de formateo numero es algo que platicamos pero asi por encima nunca profundice





    Public Function FormateoNumero(MiNum As String) As String
    If MiNum <> "" Then
    Select Case Len(MiNum)
    Case 1: FormateoNumero = " " & MiNum '
    Case 2: FormateoNumero = " " & MiNum
    Case 3: FormateoNumero = " " & MiNum
    Case 4: FormateoNumero = " " & MiNum ' 9.00
    Case 5: FormateoNumero = " " & MiNum ' 99.00
    Case 6: FormateoNumero = " " & MiNum ' 999.00
    Case 7: FormateoNumero = MiNum '9,999.00
    End Select
    End If
    End Function


    pd sigo sin poder publicar bien un codigo
  • a rayos ja.

    Doc, me escribiste un mensaje privado en el foro de Leandro y te comente alli que iba a publicar aqui, estuve publicando y me doy con la sorpresa de esta publicacion, no me maree doc. Usemos SOLO este medio para no marear.

    Voy a checar el codigo
  • Para que usas esto??? no es necesario

     Open "LPT1:" For Output As #1

  • :\"> mil disculpas amigo no es mi intencion solo que como me comentaste que por este medio pense
    :(( que tenia que publicar aqui mi duda  mil disculpas
    X_X por favor
  • Para empezar ¿Quien en estos tiempos usa LPT1 si casi todas las impresoras son USB?.

    Imprime en la impresora predeterminada, y si quieres imprimir en otra luego te paso codigo para hacer ese cambio momentaneo
  • Esa funciona de FormateoNumero lo use por un roche (problema) que tiene el objeto Printer. Y es que no te pega a la derecha los numeros, entonces hice esa funcion para meter espacios dependiendo de la cantidad de cifras del numero, eso es todo lo que hace doc.
  • ok amigo y mil disculpas no volvera a suceder. dos ultimas preguntas del dia jejeje con referente a tu funcion de formateo de numero funciona hasta esta importe 9,999.00  verdad quiero imprimir hasta 99,999.00 tendria que modificar solo tu funcion verdad ? ahora son tres campos los que se imprimen en el detalle de articulos es recomendable o imprimir un campo mas ?
  • especificamente me gustaria agregar un campo no. de serie
  • Pregunta 1.
    ¿imprimir hasta 99,999.00?
    Si, tendrias que modificar la funcion, metele una linea mas (Case 8) PERO aumentale mas espacio a los Case anteriores, eso simula una columna mas ancha a costo de usar mas ancho de papel

    Pregunta 2.
    Es recomendable mas campos dependiendo de la necesidad que tengas, no es definitivo, me parece que no uso 3 sino 4 y porque es lo que necesito, que son: Cantidad, Nombre, PrecioUnit y SubTotal
    Pero quiza tu cliente necesita digamos la unidad de medida, entonces tendrías que aumentar otro campo mas, ese impacto tendras que analizar porque te va aquedar muy comprimido, salvo que el ticket sea mas ancho, el font mas pequeño, la cantidad de letras del producto la cortas o en su reemplazo usar codigos comerciales, etc.


  • ok amigo como siempre muchas gracias
    :D excelente tu post y de nuevo mil disculpas por favor http://www.poreltube.net/index.php?p=/discussion/1898/vb6-objeto-printer
  • no problem doc. El texto no transmite estado de animo y en el mio no habia molestia, era solo para mantener una misma linea.
  • gracias amigo como siempre, casi solucionado el tema  jejeje solo seguire haciendo mas pruebas y te comentare mil gracias

¡Hola Forastero!

Pareces nuevo por aquí. Si quieres participar, ¡pulsa uno de estos botones!

Poll

No poll attached to this discussion.

In this Discussion

Top Actividad

En linea (0)