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
相关产品推荐
相关产品推荐

