Access数据库无法正常关闭问题求助(关联Form_Load代码)
Access 2021退出进程残留问题解决方案
问题根源分析
你提供的Form_Load事件代码存在语法错误,导致DAO对象引用未正确释放,这是Access进程残留的核心原因:
原错误代码:
strPropValue = CurrentDb.Containers("Databases"("UserDefined").Properties(strPropRevision)
代码缺少Containers的闭合括号,且未正确调用Documents集合,导致对象资源无法被Access正常回收。
解决方案步骤
1. 修复代码语法
将代码修正为正确的DAO对象访问方式:
Dim strPropValue As Variant Dim strPropRevision As String strPropRevision = "你的属性名称" ' 替换为实际属性名 ' 正确访问用户自定义属性 strPropValue = CurrentDb.Containers("Databases").Documents("UserDefined").Properties(strPropRevision).Value
2. 显式释放对象资源
为避免对象引用泄漏,建议显式声明并释放所有DAO对象:
Dim db As DAO.Database Dim ctr As DAO.Container Dim doc As DAO.Document Dim prop As DAO.Property Dim strPropValue As Variant Dim strPropRevision As String strPropRevision = "你的属性名称" Set db = CurrentDb Set ctr = db.Containers("Databases") Set doc = ctr.Documents("UserDefined") ' 先检查属性是否存在,避免报错 On Error Resume Next Set prop = doc.Properties(strPropRevision) On Error GoTo 0 If Not prop Is Nothing Then strPropValue = prop.Value Set prop = Nothing End If ' 强制释放所有对象 Set doc = Nothing Set ctr = Nothing Set db = Nothing
3. 优化退出时的资源清理
在主窗体的Form_Unload事件中添加资源清理逻辑,确保所有对象被释放后再退出:
Private Sub Form_Unload(Cancel As Integer) ' 关闭所有工作区 Dim ws As DAO.Workspace For Each ws In DAO.DBEngine.Workspaces ws.Close Next ws Set ws = Nothing ' 强制退出,不保存未更改内容 Application.Quit acQuitSaveNone End Sub
4. 修复Office更新兼容性问题
- 先更新Office到最新版本:打开Access → 文件 → 账户 → 更新选项 → 立即更新,部分旧版本更新会导致DAO对象释放异常。
- 若更新无效,回滚Office更新:
- 打开控制面板 → 程序 → 程序和功能 → 查看已安装的更新
- 找到Microsoft Office 2021相关的更新,右键卸载
- 重启电脑后测试数据库
5. 验证文件夹权限
确保数据库所在文件夹拥有完全控制权限:
- 右键文件夹 → 属性 → 安全 → 编辑 → 选择你的管理员账户 → 勾选「完全控制」 → 确定
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

