en

Aliquo

Software

Este blog

Sindicación

Información Aliquo

Generar códigos de barras EAN128 en Crystal Report

Mediante Crystal Report es posible generar códigos de barras EAN128 (GS1-128), aunque para ellos es necesario realizar los siguientes pasos:

   image

  1. Descargar e instalar la fuente code128.ttf en servidor y los equipos desde donde se vayan a imprimir los códigos de barras.

  2. En el taller de fórmulas de Crystal Report se deben crear dos funciones personalizadas (por ejemplo Generar_EAN128 y TestNum):  

    image

  3. En las funciones deberemos descargar o copiar el siguiente código fuente:
    Function TestNum (Codigo as string, i as number, mini as number) as Number
    'Si los caracteres de la variable mini desde la variable i son numericos entonces se devuelve 0
    mini = mini - 1
    If i + mini <= Len(Codigo) Then
    Do While mini >= 0
    If Asc(Mid(Codigo, i + mini, 1)) < 48 Or Asc(Mid(Codigo, i + mini, 1)) > 57 Then Exit Do
    mini = mini - 1
    Loop
    End If
    TestNum = mini
    End Function

    Function Generar_EAN128(Codigo as String) As String
    ' V 2.0.0
    ' Esta función permite generar el código de barras para mostrarlo con la fuente CODE128.TTF
    ' - Parametros : cadenas del código
    ' - Retorno: retorna una cadena que permite representar generar el código de barras con la fuente CODE128.TTF
    ' retorna una cadena vacía si no se puede representar el código de barras

    dim i, checksum, mini, dummy as number
    dim code128 as string
    dim tableB As Boolean
    code128=""

    If Len(Codigo) > 0 Then
    ' Verificar si los caracteres son válidos
    For i = 1 To Len(Codigo)
    Select Case Asc(Mid(Codigo, i, 1))
    Case 32 To 126, 203
    Case Else
    Codigo=""
    Exit For
    End Select
    Next
    End If

    If Len(Codigo) > 0 Then
    'Calcular de la cadena de código optimizando el uso de las tablas B y C
    tableB=true

    i = 1 ' Iniciar el indice de la cadena
    Do While i <= Len(Codigo)
    If tableB Then
    'Ver si interesa cambiar a la tabla C si para 4 dígitos de inicio o final sino 6 dígitos
    mini = IIf(i = 1 Or i + 3 = Len(Codigo), 4, 6)
    mini = TestNum (Codigo, i, mini)
    If mini < 0 Then 'Cambiando a la tabla C
    If i = 1 Then 'Iniciando con la tabla C
    code128 = Chr(210)
    Else 'Cambiar a la tabla C
    code128 = code128 & Chr(204)
    End If
    tableB = False
    Else
    If i = 1 Then code128 = Chr(209) 'Iniciando con la tabla B
    End If
    End If

    If Not tableB Then
    'Si estabamos en la tabla C se intentan procesar 2 dígitos
    mini = 2
    mini = TestNum (Codigo, i, mini)
    If mini < 0 Then 'Procesar 2 dígitos
    dummy = Val(Mid(Codigo, i, 2))
    dummy = IIf(dummy < 95, dummy + 32, dummy + 105)
    code128 = code128 & Chr(dummy)
    i = i + 2
    Else 'Si no tiene 2 dígitos se cambia a la tabla B
    code128 = code128 & Chr(205)
    tableB = True
    End If
    End If

    If tableB Then
    'Procesar 1 dígito con la tabla B
    code128 = code128 & Mid(Codigo, i, 1)
    i = i + 1
    End If
    Loop

    'Calcular el checksum
    For i = 1 To Len(code128)
    dummy = Asc(Mid(code128, i, 1))
    dummy = IIf(dummy < 127, dummy - 32, dummy - 105)
    If i = 1 Then checksum = dummy
    checksum = (checksum + (i - 1) * dummy) Mod 103
    Next

    'Calculando el código ASCII de checksum
    checksum = IIf(checksum < 95, checksum + 32, checksum + 105)

    'Añadir el checksum y parar
    code128 = code128 & Chr(checksum) & Chr(211)
    End If

    Generar_EAN128=code128
    End Function


    Nota: si se utilizan otros nombres de función entonces es necesario cambiarlo en todo el código fuente.

  4. Posteriormente crearemos una fórmula (por ejemplo Code128) que haga referencia a la función creada, donde le pasaremos como parámetro un campo, fórmula o una cadena que contenga el código EAN128 y dicha fórmula devolverá una expresión que generará el código de barras: 

       image

  5. Por último, diseñaremos el informe insertando la fórmula en la posición que deseemos y estableciéndole la fuente Code128, además si deseamos que figure el texto del código de barras entonces debemos insertar el código de barras en la posición deseada..   

        image

Comentarios

Utilice la opción de soporte para exponer dudas o comentarios.
© Ábaco Ibérica de Software, S.L. - 2009 - Todos los Derechos Reservados
Ofrecido por Community Server (Non-Commercial Edition)