以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 网络环境下并发冲突处理 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=6999) |
-- 作者:jxkqf -- 发布时间:2010/5/7 8:36:00 -- 网络环境下并发冲突处理 网络情况下多用户操作同一张数据表,如何实现某一用户编缉某行数据就锁定,编缉完本行后解锁以使其他用户可以继续编缉?用代码吗?如何实现? 按贺老六指示,我查看了帮助中的网络环境下的工作流和并发冲突处理,但我不希望有窗体,直接在数据表中操作。 |
-- 作者:狐狸爸爸 -- 发布时间:2010/5/7 8:39:00 -- 这种情况,至少得有两个按钮:开始编辑、结束编辑,不愿意窗体,就将这两个按钮做在菜单中。 |
-- 作者:jxkqf -- 发布时间: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 |
-- 作者:狐狸爸爸 -- 发布时间:2010/5/7 9:00:00 -- 每个单元格来一次这样的操作,效率可能低了点,你可以测试一下,如果速度能够接受,那也未尝不可。 |