Witam,

na wstępie aż mnie dziwi, że taki system raportowania jak CR nie posiada wbudowanych opcji jak Kody Kreskowe :)

Muszę osadzić na raportach kody kreskowe. I muszę używać wersji 8.5 CR znalazłem funkcję generującą kod EAN13 ale nie mogę jej uruchomić:

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

Pojawia się błąd:


Crystal Reports

A statement is expected here.

OK

Kompletnie nie wiem gdzie jest błąd nie znam na tyle VB aby to poprawić :/ dlatego proszę o pomoc. Dodam, że kod wklejam jako Basic Sytnax.
Baaardzo dziękuję za pomoc.