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

Excel VBA使用DAO操作Access后锁定数据库问题求助

问题:Excel VBA通过DAO向Access执行INSERT后,数据库被锁定至Excel关闭

我在Excel VBA中使用DAO向Access数据库执行INSERT操作时,事务可正常完成,数据也能成功插入,但会导致该Access数据库无法被外部打开,必须关闭Excel工作簿后才能正常访问。奇怪的是,如果运行VBA代码时Access数据库已处于打开状态,就不会出现这个问题。另外,这段代码似乎不会阻止其他用户访问数据库中的对应表格。

复现代码

主过程代码

Sub add_provision()
    Dim wrk As DAO.Workspace
    Dim db As DAO.Database

    Set wrk = DBEngine.Workspaces(0)
    ' open_db() 仅调用wrk.OpenDatabase打开指定数据库并返回结果
    Set db = open_db(wrk)

    On Error GoTo cleanup
    Call wrk.BeginTrans

    Dim insert_sql As String

    insert_sql = "INSERT INTO Provision(kID, ProvisionDate, BookID) " _
                & "VALUES(123456, #2023-06-27#, 5)"

    Call db.Execute(insert_sql)
    Call wrk.CommitTrans(dbForceOSFlush)

normexit:
    Call db.Close
    Call wrk.Close
    Set db = Nothing
    Set wrk = Nothing
    Exit Sub

cleanup:
    Call wrk.Rollback
    Resume normexit
End Sub

辅助函数open_db()代码

Function open_db(ByRef wrk As Workspace) As DAO.Database
    On Error GoTo end_function
    
    Dim db_name As String
    If ActiveWorkbook.Name = "original provision.xlsm" Then
        db_name = ' 已隐藏的开发数据库路径
    Else
        db_name = ' 已隐藏的生产数据库路径
    End If
    Set open_db = wrk.OpenDatabase(db_name)
    
    Exit Function
end_function:
    Set open_db = Nothing
End Function

内容的提问来源于stack exchange,提问作者ajzafar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:13:10