设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4903|回复: 6
打印 上一主题 下一主题

[窗体] 请问一个窗口当前记录锁定的问题

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2009-12-1 20:37:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
后台如果是mdb时,好像可以用Me.RecordLocks = 2,锁定当前记录
但我的后台是SQL,前台是MDB,请问如何锁定当前记录,防止两个人同时修改同一条记录
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-12-1 22:41:11 | 只看该作者
1# 真主

用事务来处理

点击这里给我发消息

3#
 楼主| 发表于 2009-12-2 13:00:54 | 只看该作者
我已搞定了,用的是以下的方法

  1. Option Compare Database
  2. Private Sub Form_AfterUpdate()
  3. DoCmd.SetWarnings False '关闭系统提示
  4. DoCmd.RunSQL "UPDATE 表1 SET 表1.文件可改记号1 = 0 Where (FmNeID=Forms!窗体2!FmNeID)"
  5. DoCmd.SetWarnings True '打开系统提示
  6. End Sub
  7. Private Sub Form_Current()
  8. Me.AllowEdits = False
  9. Me.AllowDeletions = False
  10. If IsNull(Text_文件可改记号) Then
  11. Else
  12. End If
  13. End Sub
  14. Private Sub Form_Open(Cancel As Integer)
  15. Me.Text_文件可改记号 = 0
  16. Me.Text_文件可改记号 = Rnd() + Format(Now(), "s") / 1000
  17. End Sub
  18. Private Sub Label_修改记录_Click()
  19. If DLookup("文件可改记号1", "表1", "FmNeID=Forms!窗体2.FmNeID") = 0 Or DLookup("文件可改记号1", "表1", "FmNeID=Forms!窗体2.FmNeID") = Me.Text_文件可改记号 Then
  20. DoCmd.SetWarnings False '关闭系统提示
  21. DoCmd.RunSQL "UPDATE 表1 SET 表1.文件可改记号1 = Text_文件可改记号 Where (FmNeID=Forms!窗体2!FmNeID)"
  22. DoCmd.SetWarnings True '打开系统提示
  23. Me.Text_当前记录编号 = Me.FmNeID
  24. Me.Requery      '刷新
  25. Me.Recordset.FindFirst "FmNeID=" + Str(Text_当前记录编号) + ""
  26. 'Me.Recordset.FindFirst "FmNeID='" & Text_当前记录编号 & "'"
  27. Me.AllowEdits = True
  28. Me.AllowDeletions = True
  29.     If Format(Now(), "s") < 30 Then
  30.     Me.文件可改记号2 = Me.文件可改记号2 + Text_文件可改记号
  31.     Else
  32.     Me.文件可改记号2 = Me.文件可改记号2 - Text_文件可改记号
  33.     End If
  34. Else
  35. Me.AllowEdits = False
  36. Me.AllowDeletions = False
  37. MsgBox "其他人员正在修改这条记录!", vbOKOnly, "非常抱歉"
  38. End If
  39. End Sub

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

4#
 楼主| 发表于 2010-11-17 14:48:29 | 只看该作者
回复 luhao 的帖子

如果改为用事务来处理,请问怎样写,能不能给个例子,谢了
5#
发表于 2010-11-24 22:29:21 | 只看该作者
回复 真主 的帖子

论坛中有介绍的,可以查一查
6#
发表于 2011-12-27 13:56:10 | 只看该作者
学习!!
7#
发表于 2011-12-27 14:25:58 | 只看该作者
本帖最后由 swj808 于 2011-12-27 14:33 编辑

我的解决办法,是在MDB前台建立与后台数据库相同的一个本地表,前台窗体的数据源为本地表,录入或编辑数据后,关闭窗体时把本地表的数据上传到后台数据库,删除本地表数据(其实这里是把本地表作为临时表使用).
这样处理的效果我觉得比较好:
1.程序处理上没有这么复杂.
2.数据编辑录入时是在本地表运行,速度比较快,占用网络和后台数据库的也资源非常小(基本只是在上传数据时才使用到).
3.较好地解决多用户时数据的锁定冲突问题.
关于防止两个用户同时编辑一条数据的问题,我觉得更多是因为需要防止产生数据的锁定冲突,使用上面的方法基本会是后面上传的数据会把前面上传的数据替换掉,问题不大.除非是要求一定要防止两个用户同时编辑一条数据的效果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-2-25 23:10 , Processed in 0.121682 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表