Office中国论坛/Access中国论坛
标题:
请问一个窗口当前记录锁定的问题
[打印本页]
作者:
真主
时间:
2009-12-1 20:37
标题:
请问一个窗口当前记录锁定的问题
后台如果是mdb时,好像可以用Me.RecordLocks = 2,锁定当前记录
但我的后台是SQL,前台是MDB,请问如何锁定当前记录,防止两个人同时修改同一条记录
作者:
luhao
时间:
2009-12-1 22:41
1#
真主
用事务来处理
作者:
真主
时间:
2009-12-2 13:00
我已搞定了,用的是以下的方法
Option Compare Database
Private Sub Form_AfterUpdate()
DoCmd.SetWarnings False '关闭系统提示
DoCmd.RunSQL "UPDATE 表1 SET 表1.文件可改记号1 = 0 Where (FmNeID=Forms!窗体2!FmNeID)"
DoCmd.SetWarnings True '打开系统提示
End Sub
Private Sub Form_Current()
Me.AllowEdits = False
Me.AllowDeletions = False
If IsNull(Text_文件可改记号) Then
Else
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
Me.Text_文件可改记号 = 0
Me.Text_文件可改记号 = Rnd() + Format(Now(), "s") / 1000
End Sub
Private Sub Label_修改记录_Click()
If DLookup("文件可改记号1", "表1", "FmNeID=Forms!窗体2.FmNeID") = 0 Or DLookup("文件可改记号1", "表1", "FmNeID=Forms!窗体2.FmNeID") = Me.Text_文件可改记号 Then
DoCmd.SetWarnings False '关闭系统提示
DoCmd.RunSQL "UPDATE 表1 SET 表1.文件可改记号1 = Text_文件可改记号 Where (FmNeID=Forms!窗体2!FmNeID)"
DoCmd.SetWarnings True '打开系统提示
Me.Text_当前记录编号 = Me.FmNeID
Me.Requery '刷新
Me.Recordset.FindFirst "FmNeID=" + Str(Text_当前记录编号) + ""
'Me.Recordset.FindFirst "FmNeID='" & Text_当前记录编号 & "'"
Me.AllowEdits = True
Me.AllowDeletions = True
If Format(Now(), "s") < 30 Then
Me.文件可改记号2 = Me.文件可改记号2 + Text_文件可改记号
Else
Me.文件可改记号2 = Me.文件可改记号2 - Text_文件可改记号
End If
Else
Me.AllowEdits = False
Me.AllowDeletions = False
MsgBox "其他人员正在修改这条记录!", vbOKOnly, "非常抱歉"
End If
End Sub
复制代码
作者:
真主
时间:
2010-11-17 14:48
回复
luhao
的帖子
如果改为用事务来处理,请问怎样写,能不能给个例子,谢了
作者:
luhao
时间:
2010-11-24 22:29
回复
真主
的帖子
论坛中有介绍的,可以查一查
作者:
bpchan
时间:
2011-12-27 13:56
学习!!
作者:
swj808
时间:
2011-12-27 14:25
本帖最后由 swj808 于 2011-12-27 14:33 编辑
我的解决办法,是在MDB前台建立与后台数据库相同的一个本地表,前台窗体的数据源为本地表,录入或编辑数据后,关闭窗体时把本地表的数据上传到后台数据库,删除本地表数据(其实这里是把本地表作为临时表使用).
这样处理的效果我觉得比较好:
1.程序处理上没有这么复杂.
2.数据编辑录入时是在本地表运行,速度比较快,占用网络和后台数据库的也资源非常小(基本只是在上传数据时才使用到).
3.较好地解决多用户时数据的锁定冲突问题.
关于防止两个用户同时编辑一条数据的问题,我觉得更多是因为需要防止产生数据的锁定冲突,使用上面的方法基本会是后面上传的数据会把前面上传的数据替换掉,问题不大.除非是要求一定要防止两个用户同时编辑一条数据的效果
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3