我尝试通过下面的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');
});
答案 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