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