以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 帮我看看这样的自动编号有问题吗? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169401) |
-- 作者:304376480 -- 发布时间:2021/6/15 12:20:00 -- 帮我看看这样的自动编号有问题吗? 老师您好! 在 DataRowAdding 事件里调用函数, e.DataRow("客户ID") = Functions.Execute("No123456","客户","客户ID","","000000") (为什么别人在使用时会出现相同的 ID 号,我自己反复测试都没有出现过相同的号码,是不是不能写在这个事件中?) 可以帮我优化一下代码吗?谢谢 \'单据自动编号函数代码 Dim tab As String = Args(0) \'表名 Dim dc As String = Args(1) \'列名 Dim pre As String = Args(2) \'编号的前缀代码 Dim mat As String = Args(3) \'格式 Dim idx As Integer Dim max As String = DataTables(Tab).Compute("max(" & dc & ")", dc & " Like \'" & pre & "%\'") If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(pre.Length)) + 1 \'获得最大单据编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If Return pre & Format(idx,mat)
|
-- 作者:有点蓝 -- 发布时间:2021/6/15 13:37:00 -- 试试放到DataRowAdded事件。如果是多用户联机使用的,这种用法是会有重复的。可以参考:http://www.foxtable.com/webhelp/topics/3008.htm |
-- 作者:304376480 -- 发布时间:2021/6/15 17:42:00 -- 是单机软件,仔细想了想,上面的代码如果没有问题的话,唯一的可能就是,客户在一台电脑上启动了两个程序,做了相同的新增行操作!谢谢老师指导! 如何禁止客户在一台电脑上打开两个相同的程序呢?
|
-- 作者:有点蓝 -- 发布时间:2021/6/15 20:18:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=122824&replyID=826534&skin=1 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=21111 |