Foxtable(狐表)用户栏目专家坐堂 → 帮我看看这样的自动编号有问题吗?


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

主题:帮我看看这样的自动编号有问题吗?

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


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
帮我看看这样的自动编号有问题吗?  发帖心情 Post By: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)

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

试试放到DataRowAdded事件。如果是多用户联机使用的,这种用法是会有重复的。可以参考:http://www.foxtable.com/webhelp/topics/3008.htm

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


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2021/6/15 17:42:00 [只看该作者]

是单机软件,仔细想了想,上面的代码如果没有问题的话,唯一的可能就是,客户在一台电脑上启动了两个程序,做了相同的新增行操作!谢谢老师指导!

如何禁止客户在一台电脑上打开两个相同的程序呢?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106652 积分:542443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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



 回到顶部