Foxtable(狐表)用户栏目专家坐堂 → 自动编号没变号


  共有3186人关注过本帖树形打印复制链接

主题:自动编号没变号

帅哥哟,离线,有人找我吗?
lgz518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
自动编号没变号  发帖心情 Post By:2019/12/31 15:09:00 [只看该作者]

Dim bh As String =  "CGDD-" & Format(Date.Today(),"yyyyMMdd")
Dim flt = "采购单号 like '" & bh & "%'"
Dim max = e.DataTable.Compute("Max(采购单号)",flt) 
Dim idx As Integer
If max > "" Then '如果存在最大单据编号
    idx = CInt(max.Substring(bh.Length,4)) + 1 
Else
    idx = 1 '否则顺序号等于1
End If
e.DataRow("采购单号") = bh & Format(idx,"-0000")

上面代码在内表关联,执行没有变号,一直就是CGDD-20191231-0001,
1.要怎么处理?
2.如何在多并发,多人录入采购单,能不重复,及如果删除后能”废号“可以再利用?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/31 15:21:00 [只看该作者]

学会调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm


Dim bh As String =  "CGDD-" & Format(Date.Today(),"yyyyMMdd")
Dim flt = "采购单号 like '" & bh & "%'"
Dim max = e.DataTable.Compute("Max(采购单号)",flt) 
msgbox(max) '这里显示什么?
Dim idx As Integer
If max > "" Then '如果存在最大单据编号
    idx = CInt(max.Substring(bh.Length,4)) + 1 
Else
    idx = 1 '否则顺序号等于1
End If
e.DataRow("采购单号") = bh & Format(idx,"-0000")

如果考虑并发,就需要有一个统一的地方来取编号,才不会导致编号重复,如果使用服务端的方式处理,参考:http://www.foxtable.com/webhelp/topics/3008.htm,如果使用存储过程处理,可以看看:http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=61848&replyID=&skin=1

至于断号重用,需要添加一个断号表,把被删除的编号记录下来,在生成编号的时候,先到这个表查询获取最早的编号,如果没有再按照上面1/2的方法生成新的编号

 回到顶部