以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  【分享】商品条形码校验位的计算方法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24874)

--  作者:Fotable
--  发布时间:2012/10/25 13:23:00
--  【分享】商品条形码校验位的计算方法

同学们一定见过商品的条形码吧!商品条形码是一个13位数,它是商品的“身份证”.条形码中前8位是厂商识别代码,接着4位是商品项目代码,最后一位是校验码,校验码是由前12位数按一定公式计算而得出的.其计算公式见下表.

步骤 举例说明
1.自右向左编号 某商品条形码为:690123456789X(X为校验码)
位置序号 13 12 11 10 9 8 7 6 5 4 3 2 1
代码 6 9 0 1 2 3 4 5 6 7 8 9 X
2.从序号2开始,求出偶数位上的数字之和① 9+7+5+3+1+9=34
3.①×3=② 34×3=102
4.从序号3开始,求出奇数位上的数字之和③ 8+6+4+2+0+6=26
5.②+③=④ 102+26=128
6.用大于或等于结果④且为10的最小整数倍的数减去④,其差即为校验码值 130-128=2
校验码X=2

--  作者:Fotable
--  发布时间:2012/10/25 13:29:00
--  
这个要写成函数,该怎么写呀
--  作者:Fotable
--  发布时间:2012/10/25 13:49:00
--  
Dim e13 As String = "690123456789"
Dim ji,ou As Integer
ji =val(e13.Chars(0)) + val (e13.Chars(2)) +val(e13.Chars(4))+val(e13.Chars(6))+val(e13.Chars(8))+val(e13.Chars(10))
ou =val(e13.Chars(1)) + val (e13.Chars(3)) +val(e13.Chars(5))+val(e13.Chars(7))+val(e13.Chars(9))+val(e13.Chars(11))
ji = (3*ou + ji) Mod 10
output.show(10 -ji)

--  作者:lin_hailun
--  发布时间:2012/10/25 16:17:00
--  
 呵呵,如果较真一点,求和就用一个循环吧……

 还不知道条形码怎么来的,只知道是一串无规律的数字。

--  作者:Fotable
--  发布时间:2012/10/25 16:21:00
--  
用一个循环比较困难,用2个循环简单一点