Access窗体AllowEdits=True无法启用编辑,事件选择是否有误?
Access窗体编辑权限问题解决
问题核心原因
用Form_Current事件设置Me.AllowEdits = False本身没错,但该事件的触发时机(每次切换记录、窗体刷新时都会触发)会覆盖你通过按钮设置的AllowEdits = True——哪怕你刚点完按钮切换了记录,Current事件又会把编辑权限重新禁用。此外,可能还存在当前记录未进入编辑模式、窗体记录源不可更新等附加问题。
具体解决方案
用窗体级变量控制状态
- 在窗体模块顶部声明一个私有变量,用来标记是否允许编辑:
Private blnAllowEdit As Boolean - 在窗体
Load事件里初始化变量:Private Sub Form_Load() blnAllowEdit = False ' 默认禁用编辑 End Sub - 修改
Current事件的代码,根据变量状态设置编辑权限:Private Sub Form_Current() Me.AllowEdits = blnAllowEdit End Sub - 编辑按钮的点击事件里更新变量并激活编辑:
Private Sub cmdAllowEdit_Click() blnAllowEdit = True Me.AllowEdits = True Me.Edit ' 强制当前记录进入编辑模式(绑定窗体适用) End Sub
- 在窗体模块顶部声明一个私有变量,用来标记是否允许编辑:
替代方案(按需选择)
如果不需要切换记录时自动禁用编辑,可以把初始禁用逻辑移到Form_Load事件,而非Current事件。这样窗体加载时设置一次Me.AllowEdits = False,按钮修改后状态会保持,直到窗体重新加载。额外检查项
- 确认窗体的记录源(表/查询)是可更新的,比如查询中没有聚合函数、没有连接不可更新的数据源;
- 检查窗体的
AllowAdditions、AllowDeletions属性是否限制了编辑操作; - 确保当前记录没有被锁定(比如其他用户正在编辑)。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

