Foxtable(狐表)用户栏目专家坐堂 → 多人同时操作,编码唯一的问题


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

主题:多人同时操作,编码唯一的问题

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
多人同时操作,编码唯一的问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/6/23 15:43:00 [只看该作者]

别沉啊..................................

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/23 15:48:00 [只看该作者]


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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/6/23 16:00:00 [只看该作者]

谢袍哥!坚决采用简单的方式!

 回到顶部