求生成条码的方法?(100分)

  • 主题发起人 主题发起人 sunjinhua
  • 开始时间 开始时间
S

sunjinhua

Unregistered / Unconfirmed
GUEST, unregistred user!
注意:不是生成打印的结果,而是如何生成那13位数字。
我好给没有条码的商品生成条码。
 
用个存诸过程数递增:

初始值:'0000000000000'

select max('number') as temp_var from table1;
if temp_var=0 then
des_string:='0000000000000'
else
begin
 temp_var:=temp_var+1;
des_string:=right('0000000000000'+inttostring(temp_var),13);
end;
des_string为新产生的条码,right函数可自己实现



 
条码分为很多种,13位条码只是其中之一,称为EAN13码。
如果你的条码需要在商品包装上公开使用,需要向主管部门申请。
如果只是内部使用,则不需要申请。

假设我们不需要申请,进行自编条码:
13位数字中,前12数字可以随意编,但是请注意:第13位数字是校验位!不能随便编!
校验位数字根据前12位数字依据一定的算法生成,这样的条码才有效。
所以,按照lishding兄的算法生成的条码是无效的。

当然,如果你不需要打印条码,只是为商品编码的话,不一定需要使用13位条码,随便
多少位,看你的需要。这样的编码使用lishding兄的算法也可。
 
to all:感谢两位作答。

为朋友作个POS超市收款系统,对于自制的商品要贴上条码出售,所以我为商品
编码表建立了条码字段,对于购进的商品,自带了条码,扫进去就可以了,而
对于没有条码的商品,要自动产生条码,由于第一次做这样的系统,不知条码方面
的知识,更不知如何生成唯一的条码,所以才求助。

按lishding的方法,生成的不是合法的条码,一定不能用条码打印机输出了;
而飞龙在天又没有提到具体的算法,即'校验位数字根据前12位数字依据一定的算法生成'
里一定的算法要如何做呢?
 
校验位生成算法:

代码位置序号:代码位置序号是指包括校验码在内的、由右至左的顺序号(校验码的
代码位置序号为1)。

计算步骤:
1.从代码位置序号2开始,所有偶数位的数字代码求和。
2.将步骤1的和乘以3。
3.从代码位置序号3开始,所有奇数位的数字代码求和。
4.将步骤2与步骤3的结果相加。
5.用“10”减去步骤4所得数值的个位数,所得结果为校验码。当步骤4所得数值的个位数
为0时,校验码为0。

把以上算法翻译成Delphi过程,不难吧?我就不代劳了。
 
多人接受答案了。
 
后退
顶部