Я пытаюсь проверить код UPC EAN 14 в доступе vba. Я пытаюсь найти его в Интернете, но не повезло. Я только что нашел для 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. Я думаю, что мой код проверки не работает. Я только что добавил последнюю строку + (Val(Mid(Barcode, 13, 1)))
на EAN13 код проверки. Пожалуйста помоги.
Вы не должны умножить первый подытог с 3. Вместо этого вы должны умножить второй подытог с 3, то есть цифры на нечетных позициях. – Codo
@Codo: Это только для EAN-14? Потому что он работает для EAN-8 и EAN-13, когда я закодирован, как показано выше? – toofaced
GS1 объясняет, как [вычислить контрольную цифру] (http://www.gs1.org/how-calculate-check-digit-manual). Если вы работаете от первой до второй последней цифры, она меняет, умножаются ли четные или четные цифры на 3. Если вы работаете в обратном направлении, это более согласовано между разными кодами EAN. – Codo