我有一张Excel发票表,我想将发票中的信息写入Access文件中的表格。我的以下代码是:
Private Sub Button66_Click()
Dim con As New ADODB.Connection
Dim connectionString As String
Dim sql As String
connectionString = "DBQ=c:\Users\Public\Public Desktop\InvoiceRecords.mdb; Driver={Microsoft Access Driver (*.mdb)};"
con.Open connectionString
sql = "insert into Invoices (Customer, Address) values(G6, G7)"
con.Execute sql
MsgBox "Values entered", vbInformation
con.Close
Set con = Nothing
End Sub
然而,当我运行它时,我得到一个运行时错误'-2147217904(80040e10)';参数太少。 我不确定这是什么。 任何想法或建议?非常感谢!
答案 0 :(得分:1)
我认为问题是你试图在INSERT查询中获取单元格G6和G7的值。您需要将它们连接到插入查询中。
sql = "insert into Invoices (Customer, Address) " & _
"values('" & Range("G6") & "', '" & Range("G7") & "')"
以这种方式构建sql命令会使您容易受到SQL注入攻击。更好的选择是使用参数化查询。
Dim cmdInsert As New ADODB.Command
With cmdInsert
.Prepared = True
.CommandType = adCmdText
.CommandText = "INSERT INTO Invoices (Customer, Address) VALUES (?, ?)"
Set .ActiveConnection = con
End With
cmdInsert.Parameters(0).Value = Range("G6").Value
cmdInsert.Parameters(1).Value = Range("G7").Value
cmdInsert.Execute
您还应该使用Jet驱动程序来连接,而不是使用ODBC驱动程序。改为使用此连接字符串。
"Provider=Microsoft.Jet.OLEDB.4.0;Data source=c:\Users\Public\Public Desktop\InvoiceRecords.mdb;"