Foxtable(狐表)用户栏目专家坐堂 → [求助]关于联网多人增加行自动编号的代码的优化请教


  共有2200人关注过本帖平板打印复制链接

主题:[求助]关于联网多人增加行自动编号的代码的优化请教

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
[求助]关于联网多人增加行自动编号的代码的优化请教  发帖心情 Post By:2017/11/14 8:55:00 [只看该作者]

我设置了个程序,增加行时,编号列自动赋值(在最大号码上+1),保证编号唯一。程序是联网的,可多人同时操作。但是,当多人同时增加行时,因为网络延迟吧,编号列的值会重复,比如,有两个0002的编号,相关代码贴出如下,麻烦大神们予以建议或优化,幼狐感激不尽!

 

一、增加行按钮代码:

If CurrentTable.name = "单位设置" Or CurrentTable.name = "历史库" Then
    messagebox.show("此数据库禁止授权 , 操作取消 !")
Else
    If _usergroup = "编辑" Then
        CurrentTable.DataTable.AddNew()
        CurrentTable.save()
    Else
        messagebox.show("未经授权 , 操作取消 !")
    End If
End If

 

二、表内 DataRowAdding 的代码

Dim max As String
Dim idx As Integer
max = e.DataTable.SqlCompute("Max(编号)","[_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
If max > "" Then '如果存在最大编号
    idx = CInt(max.Substring(0,5)) + 1
Else
    idx = 00001 '否则顺序号等于1
End If
e.DataRow("编号") = Format(idx,"00000")
e.DataRow.Save


 回到顶部