en

Aliquo

Software

Este blog

Sindicación

Información Aliquo

Generar códigos de barras EAN13 en Crystal Report

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

  image 

  1. Descargar e instalar la fuente ean13.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 debe crear una función personalizada (por ejemplo Generar_EAN13):

    image

  3. En la función deberemos descargar o copiar el siguiente código fuente:
    Function Generar_EAN13(Codigo As String) As String
    ' Esta función permite generar el código de barras para mostrarlo con la fuente EAN13.TTF
    ' - Parametros : código de 12 o 13 dígitos
    ' - Retorno: retorna una cadena que permite representar generar el código de barras con la fuente EAN13.TTF
    ' retorna una cadena vacía si no se puede representar el código de barras

    dim i, first, checksum as number
    dim code, code13 as string
    dim tableA as boolean

    ' Evaluar los dígitos del código
    If Len(Codigo) = 12 then
    code = Codigo
    ElseIf Len(Codigo) = 13 then
    code = Left(Codigo,12)
    Else
    code = ""
    end If

    ' VerIficar los dígitos del código
    For i = 1 To LEN(code)
    If Asc(Mid(code, i, 1)) < 48 Or Asc(Mid(code, i, 1)) > 57 Then
    code = ""
    Exit For
    End If
    Next

    ' Chequea los 12 dígitos y cálcula el digito de control
    If Len(code) = 12 Then
    For i = 12 To 1 Step -2
    checksum = checksum + Val(Mid(code, i, 1))
    Next
    checksum = checksum * 3
    For i = 11 To 1 Step -2
    checksum = checksum + Val(Mid(code, i, 1))
    Next
    code = code & ToText((10 - checksum Mod 10) Mod 10,0)

    ' Si el código inicial tenía 13 dígitos comprueba si el nuevo código generado
    ' es igual y en caso contrario no se generar ningún código
    If Len(Codigo)=13 and Codigo<>code then
    code = ""
    end If
    End If

    ' Chequea los 13 dígitos
    If Len(code) = 13 Then
    ' Los primeros 2 dígitos que suelen corresponder al código del país
    code13 = Left(code, 1) & Chr(65 + Val(Mid(code, 2, 1)))
    first = Val(Left(code, 1))

    ' Generar los códigos del primer bloque de dígitos
    For i = 3 To 7
    tableA = False
    Select Case i
    Case 3
    Select Case first
    Case 0 To 3
    tableA = True
    End Select
    Case 4
    Select Case first
    Case 0, 4, 7, 8
    tableA = True
    End Select
    Case 5
    Select Case first
    Case 0, 1, 4, 5, 9
    tableA = True
    End Select
    Case 6
    Select Case first
    Case 0, 2, 5, 6, 7
    tableA = True
    End Select
    Case 7
    Select Case first
    Case 0, 3, 6, 8, 9
    tableA = True
    End Select
    End Select
    If tableA Then
    code13 = code13 & Chr(65 + Val(Mid(code, i, 1)))
    Else
    code13 = code13 & Chr(75 + Val(Mid(code, i, 1)))
    End If
    Next

    ' Añadir el separador de los bloques
    code13 = code13 & "*"

    ' Generar los códigos del segundo bloque de dígitos
    For i = 8 To 13
    code13 = code13 & Chr(97 + Val(Mid(code, i, 1)))
    Next

    ' Añadir la marca final
    code13 = code13 & "+"
    End If

    Generar_EAN13=code13

    End Function


    Nota: si se utiliza otro nombre de función entonces es necesario cambiarlo en todo el código fuente.

  4. Posteriormente crearemos una fórmula (por ejemplo CodigoBarras) que haga referencia a la función creada, donde le pasaremos como parámetro un campo o una cadena que contenga el código EAN13 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 Code EAN13. 

     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)