MS Access 2016多用户模式下如何避免虚拟条目引发的锁定延迟?
解决方案:直接打开编辑表单添加新记录
核心思路是跳过虚拟条目插入步骤,直接打开编辑表单并进入新增记录模式,彻底消除多用户环境下的锁阻塞问题,同时简化代码逻辑。
修改后的VB代码
Case vbKeyF1 ' F1 键添加新记录 ' 直接打开编辑表单并进入新增模式 DoCmd.OpenForm "frmSTOKMASTEDIT", DataMode:=acFormAdd KeyCode = 0 End Select
关键优化说明
- 移除虚拟条目插入:不再提前插入未完成的空STOCKCODE记录,从根源上避免了多用户场景下的数据库锁冲突和延迟问题。
- 使用原生新增模式:
acFormAdd是Access原生的新增记录模式,表单会直接加载空白新记录,用户填写完成后再保存到数据库,符合多用户并发设计的最佳实践。 - 延迟列表刷新:将主列表的刷新操作移到编辑表单的保存或关闭事件中,避免不必要的数据库交互,同时确保用户能看到最新数据。
补充:自动刷新主列表的代码
如果需要在用户保存新记录后自动刷新主列表,可在frmSTOKMASTEDIT的VBA代码中添加以下事件处理:
Private Sub Form_AfterUpdate() ' 检查主表单是否处于打开状态,防止报错 If CurrentProject.AllForms("frmSTOKMASTLIST").IsLoaded Then [Forms]![frmSTOKMASTLIST]![lst_STOKMASTLIST].Requery End If End Sub
或者在表单关闭时刷新:
Private Sub Form_Close() If CurrentProject.AllForms("frmSTOKMASTLIST").IsLoaded Then [Forms]![frmSTOKMASTLIST]![lst_STOKMASTLIST].Requery End If End Sub
这种方案既保证了操作流畅性,又彻底解决了多用户下的延迟问题,代码简洁且符合Access的原生设计逻辑。
内容的提问来源于stack exchange,提问作者Techfixes
相关产品推荐
相关产品推荐

