插入访问 - 无法更新。数据库或对象是只读的

时间:2017-03-07 17:13:10

标签: sql excel vba excel-vba ms-access

我尝试通过下面的VBA代码将Excel 2013中的值表上传到Access 2013数据库。但是,我一直收到错误。该错误发生在cn.execute SQL行上。

  

运行时错误' -2147217911(80040e09)':

     

无法更新。数据库或对象是只读的。

我已经检查了文件和Access数据库的权限,并且它是读写访问权限。我甚至尝试在不同的目录中创建一个新的Microsoft Access数据库,但是得到了同样的错误。

让我感到困惑的另一件事是,我之前在不同的Excel工作表中没有任何问题时重复使用此代码,但将其与此工作簿/数据库一起使用不起作用。

lots of code above...
app.use(express.static(path.join(__dirname, '../client/www')));

http.listen(8080, function () {
    console.log('listening on: 8080');
}); 

2 个答案:

答案 0 :(得分:0)

请考虑这些。其中一个可能会导致此问题:

  • 您使用了OpenDatabase方法并为其打开了数据库 只读访问权限。

  • 在Microsoft Visual Basic中,您正在使用数据 控制,并将ReadOnly属性设置为True。

  • 数据库文件在操作系统或网络中定义为只读。

  • 数据库文件存储在只读媒体上。

  • 在网络环境中,您没有数据库文件的写权限。

  • 使用安全数据库时,数据库或其某个对象(如字段或表)可能设置为只读。你可以 没有权限使用您的用户名访问此数据 密码

来源here

答案 1 :(得分:0)

我会首先尝试使用硬编码的SQL语句,即

SQL = "INSERT INTO " & TableName & " ([field1],[field2],[field3],[field4],[field5],[field6],[field7],[field8]) "
SQL = SQL & "SELECT 'val1', 'val2', etc.

这区分了Access问题或Excel问题。如果硬编码语句有效,则可能需要在Excel的引用中使用IMEX = 0。即

Excel 12.0;HDR=Yes;IMEX=0;Readonly=False