私はVBAアクセスでEAN 14 UPCコードを検証しようとしています。私はそれをオンラインで見つけることを試みているが運がない。私はちょうどEAN 8、EAN 13見つかりだから、私は、次のようEAN 13に類似し、それをコーディングしてみました:それは働いていないEAN-14のチェックサム数値の計算方法は?
If Len(Barcode) = 14 Then
'do the check digit for EAN 14 for anything 14 long
checkDigitSubtotal = (Val(Mid(Barcode, 2, 1))) _
+ (Val(Mid(Barcode, 4, 1))) _
+ (Val(Mid(Barcode, 6, 1))) _
+ (Val(Mid(Barcode, 8, 1))) _
+ (Val(Mid(Barcode, 10, 1))) _
+ (Val(Mid(Barcode, 12, 1)))
checkDigitSubtotal = (3 * checkDigitSubtotal) _
+ (Val(Mid(Barcode, 1, 1))) _
+ (Val(Mid(Barcode, 3, 1))) _
+ (Val(Mid(Barcode, 5, 1))) _
+ (Val(Mid(Barcode, 7, 1))) _
+ (Val(Mid(Barcode, 9, 1))) _
+ (Val(Mid(Barcode, 11, 1))) _
+ (Val(Mid(Barcode, 13, 1)))
If Right(Str(300 - checkDigitSubtotal), 1) <> Right(Barcode, 1) Then
Validate_UPC = "EAN14-BAD"
Exit Function
End If
Validate_UPC = "EAN14-GOOD"
Exit Function
End If
。問題私は有効なEANを入力しても、それは私にEAN14-BADを与えます。私は私の検証コードが動作していないと思う。最後の行をEAN13検証コードに追加しました。 + (Val(Mid(Barcode, 13, 1)))
助けてください。
あなたは数字、つまり、3と第二の小計を掛けなければならない代わりに、3で最初の小計を掛けるべきではありません奇数の位置で。 – Codo
@Codo:EAN-14専用ですか?上記のようにコーディングしたとき、EAN-8とEAN-13で動作するからですか? – toofaced
GS1は[チェックデジットを計算する]方法について説明しています(http://www.gs1.org/how-calculate-check-digit-manually)。 1桁目から2桁目の最後の桁まで作業すると、偶数桁または奇数桁に3を掛けているかどうかが変わります。逆方向に作業すると、EANコードの長さによって整合性が取れます。 – Codo