求教,商品编码自动生成?多谢!
编码13位,大类(3)+中类(3)+品牌(3)+商品序号(4),字段为字符型;如何使同大类,同中类,同品牌的商品序号自动增加。 问题点数:0、回复次数:7Top
1 楼braversmmu(笨鸟先飞)回复于 2004-12-03 08:28:50 得分 0
用Left()函数取13位的前9位,当新增商品时,去数据库里匹配,找到后4位最大的编码,然后加1Top
2 楼sdhylj(青锋-SS)(献血有益健康(别人的))回复于 2004-12-03 08:47:45 得分 0
同意楼上,若编码格式固定的话直接取最大值加1即可,数据窗口中连续录入时最好设一实例变量,初始值为最大值加1,随后其值自增1即可。Top
3 楼lzp_lrp(lzp)回复于 2004-12-03 08:56:00 得分 0
根据大类、中类、品牌去数据库查找出最大值,然后取后四位加一即可
select max(商品编号) into :ls_card_no
from 商品
where 大类 = :ls_大类 and 中类 = :ls_中类 and 品牌 = :ls_品牌;
if len(ls_card_no) = 13 then
ls_card_no = left(ls_card_no, 9) + string(long(right(ls_card_no, 4)) + 1, '0000')
else
ls_card_no = ls_大类 + ls_中类 + ls_品牌
end if
ls_card_no 里即是你想要的商品编号Top
4 楼qyqtn(大巫)回复于 2004-12-03 09:17:24 得分 0
select distinct max(wp_ckls) into :a from wpck where wp_lrrq=:sjj;//根据录入时间判断
select wp_ckpzh into :aa from wpck where wp_ckls=:a;//根据流水号判断当天最大的凭证号
if isnull(a) or isnull(aa) then//如果没有当天凭证号
bb="1000"
else
bb=right(trim(aa),4)//如果有当天凭证号
end if
a=integer(bb)+1
cc=string(a)
dd=string(today(),'yyyymmdd')
ee=dd+cc
改改,你应该可以用了,呵呵,比较懒惰,你自己去处理吧Top
5 楼jimiok(吉米)回复于 2004-12-03 09:23:46 得分 0
如果没有“大类”、“中类”、“品牌”的字段的话,可以这样取最大值:
string ls_card_no=""
select max(商品编号) into :ls_card_no
from 商品 where substr(商品编号,1,3) = :ls_大类 and substr(商品编号,4,3) = :ls_中类 and substr(商品编号,7,3) = :ls_品牌;
if len(ls_card_no) = 13 then
ls_card_no = left(ls_card_no, 9) + string(long(right(ls_card_no, 4)) + 1, '0000')
else
ls_card_no = left(ls_card_no, 9) + "0001"
end if
Top
6 楼jeff_107(笑眯眯)回复于 2004-12-03 10:14:04 得分 0
建议你编码采用:大类 001
中类 001001 (大类+中类)
品牌 001001001 (大类+中类+品牌)
商品序号 0010010010001 (大类+中类+品牌+序号)
这样以后操作起来会方便很多Top
7 楼dpyrq(华夏08)回复于 2005-04-23 20:43:13 得分 0
请问一下楼主
我也在模拟做这个商品编码,请问你是如何根据输入的商品得到它的大类和中类的??
谢谢!!Top




