周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649371 QQ:2627049059
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
批量导入主表时调用自动编号
显示全部楼层 倒序浏览 发表日期 2020-02-07 15:19:09 3240次阅读 0次回复
本帖最后由 快表帝国客服05 于 2020-2-7 15:32 编辑

批量导入主表时调用自动编号

开发者:快表售前支持05  QQ:2902102332
适用版本:企业版


       背景:
       主表存在批量导入需求时,自动编号在批量导入时不能自动生成,一般处理办法是人工在导入表中输入自动编号,此种方式效率不太高,同时会存在编号设置错误的问题存在,故本例将通过企业版的扩展菜单功能来实现批量导入后调用系统自动编号实现自动编号。

        代码:
Declare @No1 varchar(10)
Declare @No2 varchar(10)
Declare @No3 varchar(10)
Declare @No4 varchar(18)

select @No1 = (select count(F_5) FROM T_2 WHERE F_2  ='')
select @No2 = (select SYS_AUTOID.IDMAX FROM SYS_AUTOID WITH (ROWLOCK,UPDLOCK) WHERE NAME = '自动编号')
SET    @No3 = 1
select @No4 =(select SYS_AUTOID.IDSET+CONVERT(varchar(100), GETDATE(), 112)from SYS_AUTOID  WHERE NAME = '自动编号' )
Create Table #YLS(Yno1 varchar(10),Yno2 varchar(18),Yno3 varchar(99))
While @No3 <= @No1
   Begin               
      Insert Into #YLS(Yno1,Yno2,Yno3) Values(@No2,@No4,(select top 1 ID from T_2 where F_2  ='' order by ID desc ))
     Set @No3=@No3+1
       Set @No2=@No2+1  
update T_2 set F_2 = Yno2 + (right('0000'+cast(Yno1 as varchar(4)),4)),F_3 =#当前用户姓名,F_4 =#当前日期 from #YLS   WHERE T_2.ID = Yno3
update SYS_AUTOID set SYS_AUTOID.IDMAX = @No2 , SYS_AUTOID.ENDDATE = GETDATE() from #YLS where SYS_AUTOID.AID = '7b262818-4bf2-4e7a-9498-aca6a67cc670'   
End
DROP TABLE #YLS


        说明:
        1、SYS_AUTOID为系统自动编号表,其中IDMAX字段为当前序号,IDSET字段为固定文字,AID旁边段为自动编号ID值
        2、T_2为批量导入表名,F_5为必填字段,F_2为自动编号字段,F_3为操作人字段,F_4为操作时间字段替换为对应的字段。
        3、WITH (ROWLOCK,UPDLOCK) 的作用是在批量导入时锁定对应自动编号的IDMAX值,避免多人操作时出现重复编号。
        4、(right('0000'+cast(Yno1 as varchar(4)),4)) 中的‘0000’对应自动编号的数字长度,本文中设置为4位,那在此处则则写4个0,对应后面的二个4也需要改成对应的长度的数字。
        5、如批量导入时提示E3008错误!在此上下文中不允许使用子查询。只允许使用标量表达式,说明当前数据库的版本非08版本及以上,需要将
              Insert Into #YLS(Yno1,Yno2,Yno3) Values(@No2,@No4,(select top 1 ID from T_2 where F_2  ='' order by ID desc ))  替换为
              Insert Into #YLS(Yno1,Yno2,Yno3) select @No2,@No4,(select top 1 ID from T_2 where F_2  = '' order by ID desc) from T_0
        6、是否要自动写入当前用户姓名和日期可根据实际情况选择。
        7、设置扩展公式时要勾选“批量导入后执行”
        8、设置完成后要刷新分组,让拓展公式生效后再测试批量导入。

      图片



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |