Foxtable(狐表)用户栏目专家坐堂 → 关于 网络环境中避免多人同时编辑的问题


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

主题:关于 网络环境中避免多人同时编辑的问题

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


加好友 发短信
等级:幼狐 帖子:124 积分:1894 威望:0 精华:0 注册:2012/4/9 1:21:00
关于 网络环境中避免多人同时编辑的问题  发帖心情 Post By:2013/3/22 10:01:00 [只看该作者]

If User.Roles = "实习生" Then
    MessageBox.Show("实习生无权查看业务详情!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    Dim cmd As New SQLCommand
    cmd.C
    Dim exp As String  = "当前编辑 Is Null And [_Identify] = " & e.Row("_Identify")
    cmd.CommandText = "Update {业务表} Set 当前编辑 = '" & User_Name & "' Where " & exp
    If cmd.ExecuteNonQuery = 1 Then '修改行数
        e.Row("当前编辑") = User_Name
        e.Row.Save()
        Forms("业务信息窗口").Open
    Else
        cmd.CommandText = "Select 当前编辑 From {业务表} Where [_Identify] = " & e.Row("_Identify")
        Dim nm As String = cmd.ExecuteScalar
        If nm > "" Then
            MessageBox.show(nm & "正在编辑此行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Else
            MessageBox.show("此行可能已经被删除,无法编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    End If
End If

 

为什么实际运行过程中,有的业务记录会提示此行可能已经被删除,无法编辑!,而有的又正常呢?


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/22 10:21:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/22 10:26:00 [只看该作者]

后来,帮助补充了一段话:

 

死锁与强制解锁

 

如果用户在编辑过程中非正常退出,可能会导致死锁,我们再也无法编辑此行,要解决这个问题,有两个方法:

 

方法一

增加一个强制解锁按钮,代码为:

Tables("员工").Current("编辑者") = Nothing
Tables
("员工").Current.Save()

 

方法二

将原代码中的:

Dim exp As String  = "编辑者 Is Null And [_Identify] = " & e.Row("_Identify")

改为:

Dim exp As String  = "(编辑者 Is Null Or 编辑者 = '" & User.Name & "') And [_Identify] = " & e.Row("_Identify")

这样如果某个用户在编辑某行的过程中非正常退出,导致此行被锁死,那么该用户只需重新启动FoxTable,继续编辑此行,然后正常保存或退出,即可解锁。


 回到顶部