¿En qué podemos ayudarte?
< Todos los temas
Imprimir

Cómo generar códigos de barras EAN128 en Crystal Report

Mediante Crystal Report es posible generar códigos de barras Code128 y EAN128, aunque para ellos es necesario realizar los siguientes pasos:

1. Descargar e instalar la fuente ean128.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):

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:

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.

Tabla de contenidos