我在同一个Access DB中有两个与不同查询的数据连接。第二个总是失败(无论我先跑哪个)。
当我查看数据库时,我注意到它有一个锁文件,我认为这会导致问题。在我关闭Excel文件之前它一直处于锁定状态。 导入完成后,有人可以帮我解锁数据库吗?
其他信息:
我正在使用Excel和Access 2010。
错误:
“文本文件规范' MyQuery 链接规范'不存在。您无法使用规范导入,导出或链接。”
连接字符串(注意:我正在使用命令类型:表):
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin
;Data Source=A:\folder\folder\My Database.accdb
;Mode=Share Deny None
;Extended Properties=""
;Jet OLEDB:System database=""
;Jet OLEDB:Registry Path=""
;Jet OLEDB:Engine Type=6
;Jet OLEDB:Database Locking Mode=0
;Jet OLEDB:Global Partial Bulk Ops=2
;Jet OLEDB:Global Bulk Transactions=1
;Jet OLEDB:New Database Password=""
;Jet OLEDB:Create System Database=False
;Jet OLEDB:Encrypt Database=False
;Jet OLEDB:Don't Copy Locale on Compact=False
;Jet OLEDB:Compact Without Replica Repair=False
;Jet OLEDB:SFP=False
;Jet OLEDB:Support Complex Data=False
;Jet OLEDB:Bypass UserInfo Validation=False
最后,基于this post,我尝试将我的模式从“拒绝无”更改为“阅读”,但它没有帮助。我也不明白为什么会这样,但我试过了。
编辑:我一直在研究这个问题,但找不到解决方案。我已经尝试在我的连接字符串ReadOnly = True
中添加一个附加语句,但没有运气。
答案 0 :(得分:6)
我遇到了关于数据连接的another issue,而它的解决方案实际上最终解决了这个长期存在的问题!
我的猜测是秘密在于" MaintainConnection = False":
Dim i As Integer
Dim awc As WorkbookConnection
Dim c As OLEDBConnection
For i = 0 to ActiveWorkbook.Connections.Count
Set awc = ActiveWorkbook.Connections.Item(i)
Set c = awc.OLEDBConnection
c.EnableRefresh = True
c.BackgroundQuery = False
c.Reconnect
c.Refresh
c.MaintainConnection = False
Next i
答案 1 :(得分:2)
你的回答对我有帮助。我有同样的问题,但使用Excel文件:使用Microsoft.ACE.OLEDB.12.0访问另一个Excel(打开时)的Excel文件,此数据源文件被锁定(正在使用中)。
因此,我删除了“打开文件时刷新数据”,并将其替换为Workbook_Open事件中的VBA代码。但是我改进了一些你的代码,因为我收到了错误,因为我的工作簿中有另一个ODBC连接(不是OLEBD),我不得不添加这个IF。现在一切正常。
Private Sub Workbook_Open()
Dim i As Integer
Dim awc As WorkbookConnection
For i = 1 To ActiveWorkbook.Connections.Count
Set awc = ActiveWorkbook.Connections.Item(i)
If awc.Type = xlConnectionTypeOLEDB Then
With awc.OLEDBConnection
.EnableRefresh = True
.BackgroundQuery = False
.Reconnect
.Refresh
.MaintainConnection = False
End With
ElseIf awc.Type = xlConnectionTypeODBC Then
With awc.ODBCConnection
.EnableRefresh = True
.BackgroundQuery = False
.Refresh
End With
End If
Next i
End Sub
答案 2 :(得分:1)
您可以尝试将连接字符串中的模式更改为
模式=读
而不是
模式=分享拒绝无
答案 3 :(得分:0)
Mode =“共享拒绝”,无/读无效
我不得不复制Workbook_Open Sub