+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Prüfziffernberechnung ean-128


(Waldemar Rozanski) #1

Hallo,

gibt es in L&L eine Möglichkeit die Prüfziffer für den Ean-128 Barcode zu berechnen? (NVE (SSCC) - 18 Code)

Bei Gs1 Germany kann eine Prüfziffer berechnet werden.
Für die Zeichenkette: 37609999795100101 bekomme ich dort die Prüfziffer 2

CheckMod10 für diese Zeichenkette liefert jedoch eine andere Prüfziffer.

Gibt es vielleicht einen Workaround?

Vielen Dank.


(Günther Schwarze) #2

Ist halt immer die Frage, welche Prüfziffer Du brauchst. Da gibt es die verschiedensten Gewichtungen. Seit LL22 unterstützt CheckMod10 einen zweiten Parameter mit dem man die Gewichtung eingeben kann. Damit sollte alles mögliche machbar sein, wenn es sich denn überhaupt um einen Modulo-10-Algorithmus handelt. Ansonsten Prüfziffer in der Applikation berechnen und mitgeben, das geht immer.

G.


(Waldemar Rozanski) #3

Hi, ich kann die Prüfziffer leider nicht in der Anwendung berechnen, da ich keinen Zugang zu dem Code habe. Und LL22 haben wir leider auch nicht.

Soll ich überhaupt versuchen diesen Code in die Benutzervariablen von L&L zu unterbringen, oder gleich eine externe Anwendung auf die DB loslassen?

Private Function NvePruefzifferBerechnen(ByVal sKzVpe As String, _
                                         ByVal sBbn As String, _
                                         ByVal sLfdNr As String) As String
    ' Variablen der Function
    Dim iZwischensumme As Integer = 0
    Dim iStringziffer As Integer = 0
    Dim iMerkWert As Integer = 0
    Dim iStrLaenge As Integer = 0

    ' Beschreibung zur Berechnung
    ' NVE                3  4  0  1  2  3  4  5  1  2  3  4  5  6  7  8  9
    ' multipliziert      *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
    ' Gewichtung         3  1  3  1  3  1  3  1  3  1  3  1  3  1  3  1  3
    ' Ergebniss          9+ 4+ 0+ 1+ 6+ 3+12+ 5+ 3+ 2+ 9+ 4+15+ 6+21+ 8+27 = 135

    '                   135 MOD 10 := 13 Rest 5 := Prüfziffer ist 5

    ' Berechnung
    iStrLaenge = sKzVpe.Length

    For i As Integer = 1 To iStrLaenge
        iStringziffer = CInt(Mid(sKzVpe, i, 1))
        If i Mod 2 = 0 Then
            iZwischensumme += iStringziffer
        Else
            iZwischensumme += iStringziffer * 3
        End If
    Next

    iMerkWert = iStrLaenge
    iStrLaenge = sBbn.Length

    For i As Integer = iMerkWert + 1 To iMerkWert + iStrLaenge
        iStringziffer = CInt(Mid(sBbn, i - iMerkWert, 1))
        If i Mod 2 = 0 Then
            iZwischensumme += iStringziffer
        Else
            iZwischensumme += iStringziffer * 3
        End If
    Next

    iMerkWert += iStrLaenge
    iStrLaenge = sLfdNr.Length

    For i As Integer = iMerkWert + 1 To iMerkWert + iStrLaenge
        iStringziffer = CInt(Mid(sLfdNr, i - iMerkWert, 1))
        If i Mod 2 = 0 Then
            iZwischensumme += iStringziffer
        Else
            iZwischensumme += iStringziffer * 3
        End If
    Next

    ' Die Prüffziffer
    Return CStr(((10 - (iZwischensumme Mod 10)) Mod 10))

End Function

(Günther Schwarze) #4

Hm, mit LL22 oder einer benutzerdefinierten Funktion in der Anwendung wäre das simpel. Wenn Du da keinen Einfluss drauf hast würde ich tatsächlich die Datenquelle anpassen, das scheint mir dann die einfachste Lösung.

G.