You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:12:45