网络情况下多用户操作同一张数据表,如何实现某一用户编缉某行数据就锁定,编缉完本行后解锁以使其他用户可以继续编缉?用代码吗?如何实现?
按贺老六指示,我查看了帮助中的
网络环境下的工作流和并发冲突处理,但我不希望有窗体,直接在数据表中操作。
这种情况,至少得有两个按钮:开始编辑、结束编辑,不愿意窗体,就将这两个按钮做在菜单中。
可否在表属性的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
每个单元格来一次这样的操作,效率可能低了点,你可以测试一下,如果速度能够接受,那也未尝不可。