【官方】A5重新生成商品档案13码、重新生成条码?
问题补充:问题补充:
先备份数据库,在SQl查询分析器中选择好数据库,输入以下语句并执行:
declare @i int,@item_barcode varchar(100),@item_no varchar(10),@zj1 int,@zj2 int ,@sum int
set @i=1
declare mycursor cursor for select item_no from t_item_info
open mycursor
fetch mycursor into @item_no
while @@fetch_status=0
begin
select @item_barcode='8'+right(('0000000000000000'+convert(varchar(10),@i)),11)
select @zj1=convert(int,substring(@item_barcode,12,1))+convert(int,substring(@item_barcode,10,1))+convert(int,substring(@item_barcode,8,1))+convert(int,substring(@item_barcode,6,1))+convert(int,substring(@item_barcode,4,1))+convert(int,substring(@item_barcode,2,1))
select @zj2=convert(int,substring(@item_barcode,11,1))+convert(int,substring(@item_barcode,9,1))+convert(int,substring(@item_barcode,7,1))+convert(int,substring(@item_barcode,5,1))+convert(int,substring(@item_barcode,3,1))+convert(int,substring(@item_barcode,1,1))
select @zj1=@zj1*3+@zj2
declare @j int
set @j=1
while @j*10<@zj1
begin
select @j=@j+1
end
select @sum=@j*10-@zj1
update t_item_info set item_barcode=@item_barcode+convert(varchar(10),@sum) where item_no=@item_no
select @i=@i+1
select @zj1=''
select @zj2=''
fetch mycursor into @item_no
end
close mycursor
deallocate mycursor
这里生成的13码是8开头的,要改成其它开头的自行把下列条码中的8改成其它数字:
select @item_barcode='8'+right(('0000000000000000'+convert(varchar(10),@i)),11)
要注意,国际13码是不允许0开头的,因为0开头的条码条码扫描器只能识别到后12位,所以不能设置成0开头。
- 提问者: 李祥
- 等级:问不倒翁
- 时间:2014-06-17 16:15
- 悬赏:0
- 解决时间:2014-06-20 12:07
其它回答 共 2 条
不错的学习资料
- 回答者:kh359
- 等级:问不倒翁
- 时间:2014-06-20 09:27
顶起。
- 回答者:zhaoshuai888
- 等级:问不倒翁
- 时间:2014-06-20 09:52
快到期问题