以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多人同时操作,编码唯一的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86699) |
-- 作者:jwt -- 发布时间:2016/6/23 14:42:00 -- 多人同时操作,编码唯一的问题 拟设置一个档案管理系统,管理公司档案。设计功能:在增加 行的时候,自动编号且唯一,在现有的最大编号上自动+1。为了增加录入数据时工作效率,设定多人多台电脑多个程序同时录入。我用datarow,即员工A在A电脑上的系统增加行编号是00005,这时,员工B在B电脑上再点击增加行的编号就应该是00006了。 各项代码如下,但并未实现我想要的多人多系统同时录入编码唯一这个功能。顶多是自己的系统上每增加一行编号就+1。求教 增加行按钮代码: If CurrentTable.name = "单位设置" Then messagebox.show("此数据库禁止授权 , 操作取消 !") Else If _usergroup = "编辑" Then CurrentTable.AddNew() CurrentTable.save Else messagebox.show("未经授权 , 操作取消 !") End If End If 表datarowadding代码: Dim max As String Dim idx As Integer max = e.DataTable.Compute("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") |
-- 作者:jwt -- 发布时间:2016/6/23 15:43:00 -- 别沉啊.................................. |
-- 作者:大红袍 -- 发布时间:2016/6/23 15:47:00 -- 最简单的方法,这样做
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
|
-- 作者:大红袍 -- 发布时间:2016/6/23 15:48:00 -- 复杂一点,这样做
http://www.foxtable.com/help/topics/1994.htm
http://www.foxtable.com/help/topics/3008.htm
|
-- 作者:jwt -- 发布时间:2016/6/23 16:00:00 -- 谢袍哥!坚决采用简单的方式! |