工单号自动编号  有啥好的办法么

根据一个样单  安排工单  一个样单中有多个配件需要安排工单  如果一个样单号为sample1908  我需要安排三个配件的话工单号为sample1908-001,sample1908-002,sample1908-003   然后不同的样单了如样单号为sample1909又重新开始编sample1909-001,sample1909-002

有啥好的方法实现吗  不知道我描述的够不够清楚  我需要填报样单号进去  一行一行 填报 填报个几十行在提交  所以去数据库样单对应序号的最大值实现的话不行

FineReport wd210010 发布于 2019-8-26 09:45 (编辑于 2019-8-26 09:49)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
wd210010Lv7高级互助
发布于2019-9-19 16:17

没有解决

最佳回答
0
凌建Lv7高级互助
发布于2019-8-26 09:58

我写了个存储过程实现的

  • wd210010 wd210010(提问者) 能具体一点么 谢谢了
    2019-08-26 09:59 
  • 凌建 凌建 回复 wd210010(提问者) ALTER proc [dbo].[create_jnum] @ShopNum as varchar(20) as declare @NUM as int; declare @ShopNum1 as varchar(10); set nocount on begin if @ShopNum=\'总部\' begin select @Num=4-LEN(cast(max(cast(right(jnum,4) as int))+1 as varchar)) from Personnel where shopnum=@ShopNum and jnum like \'U%\'; if @NUM=3 select \'U000\'+cast(max(cast(substring(jnum,2,5) as int))+1 as varchar) Jnum from Personnel where jnum like \'U%\' if @NUM=2 begin select \'U00\'+cast(max(cast(substring(jnum,2,5) as int))+1 as varchar) Jnum from Personnel where jnum like \'U%\' end if @NUM=1 begin select \'U0\'+cast(max(cast(substring(jnum,2,5) as int))+1 as varchar) Jnum from Personnel where jnum like \'U%\' end if @NUM=0 begin select \'U\'+cast(max(cast(substring(jnum,2,5) as int))+1 as varchar) Jnum from Personnel where jnum like \'U%\' end end else if substring(@ShopNum,1,1)=\'S\' if @ShopNum=\'S32\' begin set @ShopNum1=\'S32_1\' END else begin set @ShopNum1=@ShopNum end begin print @shopnum1 if not exists (select 1 from personnel where jnum is not null and shopnum=@shopnum) begin insert into personnel(post,name,jnum,shopnum,entry_time,state) values(\'店长\',\'默认店长\',@shopnum1+\'0000\',@shopnum,convert(varchar(10),getdate(),23),\'默认\') end select @Num=4-LEN(cast(max(cast(right(jnum,4) as int))+1 as varchar)) from Personnel where shopnum=@ShopNum; if @NUM=3 begin select @ShopNum1+\'000\'+cast(max(cast(right(jnum,4) as int))+1 as varchar) Jnum from Personnel where shopnum=@ShopNum end if @NUM=2 begin select @ShopNum1+\'00\'+cast(max(cast(right(jnum,4) as int))+1 as varchar) Jnum from Personnel where shopnum=@ShopNum end if @NUM=1 begin select @ShopNum1+\'0\'+cast(max(cast(right(jnum,4) as int))+1 as varchar) Jnum from Personnel where shopnum=@ShopNum end if @NUM=0 begin select @ShopNum1+cast(max(cast(right(jnum,4) as int))+1 as varchar) Jnum from Personnel where shopnum=@ShopNum end end end
    2019-08-26 10:08 
最佳回答
0
孤陌Lv6资深互助
发布于2019-8-26 10:00(编辑于 2019-8-26 10:01)

这个根据样单 和配件和 然后取最大值就好了 

唯一这样解决要考虑并发的

  • wd210010 wd210010(提问者) 问题我是安排的时候多个一起填报提交的 不是填一条提交一条 没提交前数据库还没有数据
    2019-08-26 10:01 
  • 孤陌 孤陌 回复 wd210010(提问者) 这个是可以用公式解决的啊 \"RK\" + FORMAT(ds1.select(rkxh) + 1, \"000\")
    2019-08-26 10:04 
  • 孤陌 孤陌 回复 wd210010(提问者) 不考虑并发可以这样写公式啊
    2019-08-26 10:05 
  • wd210010 wd210010(提问者) 并发什么意思
    2019-08-26 10:06 
  • 孤陌 孤陌 回复 wd210010(提问者) 就是多个人填报入库啊,考虑并发 那就需要后台进行了肯定是不可以前台生成了
    2019-08-26 10:07 
最佳回答
0
黄源Lv6中级互助
发布于2019-8-26 10:03

截取,然后转换成数字取最大,+1然后再拼回去,没有就默认001

最佳回答
0
白水先生Lv3初级互助
发布于2019-8-26 10:19

好办法就是不在帆软处理,帆软考虑并发太麻烦了,直接在数据库写触发器,自动生成工单号

  • 4关注人数
  • 1505浏览人数
  • 最后回答于:2019-9-19 16:17
    请选择关闭问题的原因
    确定 取消
    返回顶部