Foxtable(狐表)用户栏目专家坐堂 → 网络环境下并发冲突处理


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

主题:网络环境下并发冲突处理

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


加好友 发短信
等级:三尾狐 帖子:778 积分:7463 威望:0 精华:0 注册:2009/9/7 10:55:00
网络环境下并发冲突处理  发帖心情 Post By:2010/5/7 8:36:00 [只看该作者]

网络情况下多用户操作同一张数据表,如何实现某一用户编缉某行数据就锁定,编缉完本行后解锁以使其他用户可以继续编缉?用代码吗?如何实现?

按贺老六指示,我查看了帮助中的网络环境下的工作流和并发冲突处理,但我不希望有窗体,直接在数据表中操作。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/7 8:39:00 [只看该作者]

这种情况,至少得有两个按钮:开始编辑、结束编辑,不愿意窗体,就将这两个按钮做在菜单中。


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


加好友 发短信
等级:三尾狐 帖子:778 积分:7463 威望:0 精华:0 注册:2009/9/7 10:55:00
  发帖心情 Post By:2010/5/7 8:57:00 [只看该作者]

可否在表属性的startedit事件中输入如下代码:
Dim r As Row = Tables("表A").Current
r.
DataRow.Load() '重新加载此行的数据
If
r.IsNull("标记") Then
   
Dim cmd as New SQLCommand
    cmd.CommandText =
"Update {表A} Set 标记 = -1 Where 标记 Is Null And [_Identify] = " & r("_Identify")
    If
cmd.ExecuteNonQuery <> 1 Then
'防止并发冲突,上面的条件是很关键的
        
 MessageBox.Show("其他用户已经抢先处理此行!")
    End
If
ElseIf
r("标记") = -1 Then
    Messagebox.Show(
"其他用户正在处理此行!")
End If

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/7 9:00:00 [只看该作者]

每个单元格来一次这样的操作,效率可能低了点,你可以测试一下,如果速度能够接受,那也未尝不可。

 回到顶部