Utilizar código de fuente 128 de código de barras en informes de código de barras

Utilice los siguientes pasos para sustituir la fuente predeterminada del código de barras con la fuente de código de barras Code128. Code128 imprime códigos de barras más pequeños que la fuente predeterminada (fuente de código de barras Code39QuarteInch).

Tenga en cuenta que la compatibilidad de Infor con la fuente de código de barras Code128 solo imprime los caracteres disponibles actualmente en la fuente de código de barras predeterminada.

Nota:  Con Code128, Code128Narrow y Code128VeryNarrow, se recomienda un tamaño de fuente mínimo de 48. Con Code128Wide y Code128VeryWide, se recomienda un tamaño de fuente mínimo de 36.

Cuando utilice esta fuente, debe usar Inglés como configuración regional de Windows.

Estas son las diferencias entre Code 128A y Code 128B:

  • Code 128A no admite caracteres en minúscula, al contrario que Código 128B.
  • Code 128A puede codificar signos de puntuación, los dígitos de 0 a 9, caracteres en mayúscula (no admite minúscula), los códigos de control ASCII estándar, y los caracteres especiales que se muestran en la siguiente tabla. Code 128B puede codificar signos de puntuación, los dígitos de 0 a 9, caracteres en minúscula y mayúscula, y los caracteres especiales de la siguiente tabla.

Recomendamos el uso de Code 128B; en general, es la mejor opción para la mayoría de los casos.

En esta tabla se muestran los caracteres especiales de Code 128:

Código ASCII    Code 128A    Code 128B   
32 FNC3 FNC3
33 FNC2 FNC2
34 Turno Turno
35 Código C Código C
36 Código B FNC4
37 FNC4 Código A
38 FNC1 FNC1
(FNC = Tecla Función)

Para sustituir la fuente predeterminada del código de barras con la fuente de código de barras Code128:

  1. En Visual Studio 2008, abra el archivo .rdl en el que desea sustituir la fuente de código de barras Code128 de la fuente de código de barras existente. Los archivos .rdl se guardan por lo general en el servidor de la utilidad, en la carpeta TaskMan\Report.
  2. Incluya una de las siguientes funciones en el archivo .rdl:

    Para Code 128A:

    
    Public Function GetBarCodeOutput t(ByVal inputValue As String) As String
    Dim CheckDigit As Integer = 0 
    Dim i As Integer = 0 
    Dim BarCodeOutput As String = ""
    Dim BarCodeInput As String 
    Dim BarCodeTemp  As String = ""
    Dim SingleByte  As Integer = 0 
    BarCodeInput = inputValue.ToUpper()
    For i = 1 To Len(BarCodeInput)
        SingleByte = Asc(Mid(BarCodeInput, i,1))
        BarCodeTemp = BarCodeTemp + Chr(SingleByte - 32)
    Next 
    CheckDigit = 1
    For i = 1 To Len(BarCodeTemp) 
       SingleByte = Asc(Mid(BarCodeTemp, i,1))
       CheckDigit = (CheckDigit + (SingleByte * i)) Mod 103
    Next 
    BarCodeTemp = BarCodeTemp + Chr(CheckDigit)
    For i = 1 To Len(BarCodeTemp)
        SingleByte = Asc(Mid(BarCodeTemp, i, 1))     
        If SingleByte =0 Then
           BarCodeOutput = Chr(0)
        ElseIf SingleByte > 0 And SingleByte < 94 Then
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 32)
        Else
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 103)
        End If
    Next        
    Return  "µ"+ BarCodeOutput + Chr(196)
    End Function

    Para Code 128B:

    
    Public Function GetBarCodeOutput(ByVal inputValue As String) As String
    Dim CheckDigit As Integer = 0 
    Dim i As Integer = 0 
    Dim BarCodeOutput As String = ""
    Dim BarCodeInput As String 
    Dim BarCodeTemp  As String = ""
    Dim SingleByte  As Integer = 0 
    BarCodeInput = inputValue.ToUpper()
    For i = 1 To Len(BarCodeInput)
        SingleByte = Asc(Mid(BarCodeInput, i,1))
        BarCodeTemp = BarCodeTemp + Chr(SingleByte - 32)
    Next 
    CheckDigit = 1
    For i = 1 To Len(BarCodeTemp) 
       SingleByte = Asc(Mid(BarCodeTemp, i,1))
       CheckDigit = (CheckDigit + (SingleByte * i)) Mod 103
    Next 
    BarCodeTemp = BarCodeTemp + Chr(CheckDigit)
    For i = 1 To Len(BarCodeTemp) 
        SingleByte = Asc(Mid(BarCodeTemp, i, 1))     
        If SingleByte =0 Then
           BarCodeOutput = Chr(0)
        ElseIf SingleByte > 0 And SingleByte < 94 Then
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 32)
        Else
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 103)
        End If
    Next        
    Return "¶"+ BarCodeOutput + Chr(196)
    End Function
    	
  3. Haga clic con el botón derecho en un objeto de código de barras y seleccione Editar fórmula. En el Editor de fórmulas, verá una fórmula similar a esta:
    ="*" & Replace(UCase(Trim(Fields!item.Value)),"", "_") & "*"

    En este ejemplo, Trim(Fields!item.Value) es un campo de la base de datos que se sustituye con un código de barras. Los informes también pueden incluir fórmulas para procedimientos almacenados.

  4. Sustituya la fórmula de una línea con una llamada a la función que añadió en el paso 2:
    
    =Code.GetBarCodeOutput(FieldValue)
    	

    donde FieldValue es el campo de la base de datos o campo del procedimiento almacenado que se sustituye con un código de barras, por ejemplo:

    
    =Code.GetBarCodeOutput(Trim(Fields!item.Value))
  5. Para cerrar el Editor de fórmulas, haga clic en el botón Cerrar.
  6. Haga clic con el botón derecho en un objeto de código de barras y seleccione el campo Formato.
  7. En la ficha Fuente, seleccione la fuente y el tamaño de fuente adecuados. Por ejemplo, seleccione Fuente Code128 y Tamaño 48.
  8. Haga clic en Aceptar.
  9. Guarde el archivo .rdl y pruebe el informe.