当Excel工作簿与其打开连接时,写入Access表失败

时间:2014-01-11 12:18:42

标签: vb.net ms-access

我正在尝试创建一个Windows窗体应用程序,它将信息存储在一个访问数据库中,然后可以在Excel中查看。

我已经将它写入数据库,并且它工作正常,直到我尝试将数据导入Excel。然后我得到错误:“操作必须是可更新的查询”

这似乎与以某种方式导入Excel的数据库有关。

有谁知道这是什么,可以做些什么?

我需要在excel中查看数据的原因是我非常保守和反访问的同事,他们已经习惯了。

这是我正在尝试的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using connection As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\users\espen\documents\visual studio 2012\Projects\ProjectName\database.accdb;Persist Security Info=False;")
        connection.Open()
        Dim sqlString As String = "INSERT INTO TableName ([column1], [column2]) VALUES('" & TextBox1.Text & "', '" & TextBox2.Text & "')"
        Using command As OleDb.OleDbCommand = New OleDb.OleDbCommand(sqlString, connection)
            command.ExecuteNonQuery()

        End Using

        connection.Close()
    End Using

End Sub

1 个答案:

答案 0 :(得分:3)

我能够重新创建你的问题。它似乎是由Excel创建与Access数据库的连接时使用的默认设置引起的。默认连接字符串包含选项

Mode=Share Deny Write;

所以当Excel打开连接时,没有其他进程可以写入Access数据库。

以下修复似乎对我有用:

在Excel中,单击功能区“数据”选项卡上的“连接”按钮。在列表中选择适当的连接后,单击“属性...”按钮。在“定义”选项卡上,编辑“连接字符串”以使用

Mode=Share Deny None;

如下所示:

ShareDenyNone.png

保存更改,然后关闭并重新打开Excel工作簿。