2016-04-14 42 views
0

读我试图执行此代码:VBA执行访问查询错误:数据库或对象只

Dim cn As ADODB.Connection 
Set cn = New ADODB.Connection 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 
Dim strConn As String 
Dim strAcc As String 

'Connecting to the DB 
cn.ConnectionTimeout = 7200 
cn.CommandTimeout = 7200 
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\Documents\proof.accdb;Mode=Share Deny None; Persist Security Info=False" 
cn.Open strConn 

'Creating the query string 
strAcc = "SELECT * " _ 
& " INTO Table1 " _ 
& " FROM [Excel 8.0;HDR=YES;DATABASE=D:\Documents\database.xlsm].[Sheet1$];" 

'Executing the query 

rs.Open strAcc, cn, adOpenDynamic 

当执行它得到了错误:“无法刷新数据库或对象只读”上该行:

rs.Open strAcc, cn, adOpenDynamic 

我不知道如何解决这个问题。奇怪的是,当执行一个不同的查询(从现有的表中选择)时,它可以很好地工作。这就是为什么我猜这个问题与使用SELECT INTO命令创建新表的事实有关。我也尝试在连接中写入“Mode = Share Deny None”(你可能会看到),但并未解决问题。

回答

0

由于目录后端数据库位于:“d:\ Documents \ proof.accdb”位​​于您没有写入权限的目录内,因此存在此问题的可能性最大。因此,您只能从数据库/文件中读取数据,而不能“写入”,即执行插入或更新就像您目前正在尝试的那样。

导航到并右键单击该目录,选择“属性”。查看安全选项卡,如果可以的话,将自己的权限分配给该目录。