Codigos Barra Layout de Impresion SAP y/o Crystal

Buenos dias,

Estoy tratando de hacer Etiquetas por productos para poder imprimir Codigos de Barra de la siguiente Forma: Arriba el Codigo del Articulo, En la Mitad Codigo de Barra del Articulo (para lector) y abajo del nombre del articulo.

Cree el Reporte en Query manager y su layaut de impresion que me traiga:
ItemCode, Codebars, itemName

No logro agregar en el layout la imagen del campo del codigo de barra del producto.

Me podrian orientar como puedo lograr verlo: Ver imagen:

Si tienen como hacerlo mas facil en Crystal también me puede ayudar:

Esta es la consulta:

Esta es el layout de impresion

Muchas gracias por su ayuda

Sin duda es mas facil trabajar con CR, si no es muy complicado la logica de tus barcodes inclusive puedes hacerlo con un font y sale de maravilla.

Saludos

1 me gusta

Me podrias orientar un poco mas como se hace en CR?

A diferencia del manejo de layour de impresión, CR es mas facil por su interfaz gráfica y la facilidad de integrar campos al reporte, adicional que puedes agregar muchos elementos con solo drag & drop. Por medio de la link que te comparto puedes darte una idea de como se realiza.

saludos

2 Me gusta

Segui los pasos tal cual el link que me enviaste pero me da error en la Funcion de EAN128

y en el TestNum

Al crear las forumlas tambien dan error:

Eso sucede porque tienes en uso Sintaxis Crystal. Cambialo

1 me gusta

No estoy entiendo Julian, disculpame. Como hago el cambio?


La cambie y sigue dando el mismo error

algo me dice que no estas haciendo algo bien

Si, pero no logro dar con el error.

en esta ventana elimina “formula=”

Hola amigo mira las imágenes yo hice condigo de barra para el recibo y me funciona bien.



3 Me gusta

Los errores que te aparecen son error de sintaxis, es decir el código que insertaste no está bien indentado.

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
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

De está forma debería funcionar.

PD: Antes de guardar utiliza el botón de verificar formular.

1 me gusta