Excel VBA – 使用参数的types不匹配错误

我试图切换我的代码使用参数。 我在cmd.Execute rs行上遇到types不匹配错误。 我想这将是我的variables没有匹配,他们在访问,但我已经检查,并确保一切都是相同的。

Public Sub AddProducts() 'Initialize all variables Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command Dim stDB As String, stSQL As String, stSQLTwo As String, stProvider As String Dim linkOID As Integer Dim linkPID As Integer stDB = "Data Source= " & ThisWorkbook.Path & "\obsDatabase.accdb" stProvider = "Microsoft.ACE.OLEDB.12.0" 'Opening connection to database With cn .ConnectionString = stDB .Provider = stProvider .Open End With cmd.ActiveConnection = cn 'Get OrderID to link to products stSQL = "SELECT OrderID FROM Orders WHERE OrderNumber = " & txtOrderNum & "" rs.Open stSQL, cn linkOID = rs("OrderID").Value rs.Close 'Get SupplierID to link to products stSQL = "SELECT SupplierID FROM Suppliers Where SupplierName = '" & cboxCompName & "'" rs.Open stSQL, cn linkPID = rs("SupplierID").Value rs.Close stSQL = "SELECT * FROM Products WHERE ProductName = '" & cboxItemNum & "'" rs.Open stSQL, cn If rs.EOF Then 'Link all product information together stSQL = "INSERT INTO Products (ProductName, ProductDescription, ProductUnit, SupplierID) " & _ "Values (paramItemNum, paramDesc, paramUnit, paramPID)" cmd.CommandText = stSQL cmd.CommandType = adCmdText With cmd .Parameters.Append .CreateParameter("paramItemNum", adVarChar, adParamInput, 50, cboxItemNum) .Parameters.Append .CreateParameter("paramDesc", adVarChar, adParamInput, 50, txtDescription) .Parameters.Append .CreateParameter("paramUnit", adVarChar, adParamInput, 50, txtUnit) .Parameters.Append .CreateParameter("paramPID", adInteger, adParamInput, , linkPID) End With cmd.Execute rs End If rs.Close cn.Close End Sub 

我从你的代码中取出这3行:

 Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command cmd.Execute rs 

Command.Execute接受3个可选参数:RecordsAffected; 参数; 选项。 这些都不是一个Recordset 。 你得到types不匹配的错误,因为你没有提供cmd.Execute一个合适的参数。