title: Excel Vba - Type Mismatch Error using parameters
body: <p>I'm trying to switch my code to use parameters. I'm getting a Type Mismatch error on the cmd.Execute rs line. I figured it would be my variables no matching up with what they are in access but I've checked and made sure that everything is the same.</p>
  
  <pre><code>    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= " &amp; ThisWorkbook.Path &amp; "\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 = " &amp; txtOrderNum &amp; ""
  
  rs.Open stSQL, cn
  
  linkOID = rs("OrderID").Value
  
  rs.Close
  
  'Get SupplierID to link to products
  stSQL = "SELECT SupplierID FROM Suppliers Where SupplierName = '" &amp; cboxCompName &amp; "'"
  
  rs.Open stSQL, cn
  
  linkPID = rs("SupplierID").Value
  
  rs.Close
  
  stSQL = "SELECT * FROM Products WHERE ProductName = '" &amp; cboxItemNum &amp; "'"
  rs.Open stSQL, cn
  
  If rs.EOF Then
  
      'Link all product information together
      stSQL = "INSERT INTO Products (ProductName, ProductDescription, ProductUnit, SupplierID) " &amp; _
              "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
  </code></pre>