我担心的是,由于要被应用程序使用,因此我要连接的文件中存在读写锁定,如下所示:锁定的MS Access文件
当我尝试刷新MS Excel中的数据连接时,会出现这些错误/通知,因为它无法建立与正在使用的MS Access文件的连接:
我想知道MS Access中是否deny write
只有一个选项,但是即使它被锁定allow read
,也可以使我建立read-only data connection
到我的MS Excel文件的选项。
我record-level locking
在MS Access文件中找到了选项,但我担心它可能会给正在向MS Access文件中写入数据的主应用程序的用户带来问题。我尝试禁用它,但它仍然被锁定。显示以下选项:记录级锁定选项
我的Excel数据连接到Access文件的连接字符串如下所示:
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=Admin;
Data Source=C:\Users\ACER\Desktop\Test.MDB;
Mode=Share Deny Write;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
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
您可以使用此VBA以只读模式连接Access数据库:
Sub ReadFromAccess()
Dim cn As Object, rs As Object
Dim intColIndex As Integer
Dim DBFullName As String
Dim TargetRange As Range
DBFullName = "C:\Users\Username\Desktop\Sample.mdb"
Application.ScreenUpdating = False
Set TargetRange = Sheets("Sheet1").Range("A1")
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFullName & ";" & "Persist Security Info=False;Mode=Read;"
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM Table Name", cn, , , adCmdText
For intColIndex = 0 To rs.Fields.Count - 1
TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name
Next
TargetRange.Offset(1, 0).CopyFromRecordset rs
Application.ScreenUpdating = True
On Error Resume Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
On Error GoTo 0
Exit Sub
End Sub
NB
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句