我设置了个程序,增加行时,编号列自动赋值(在最大号码上+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