簡體   English   中英

Excel Vba-使用參數鍵入不匹配錯誤

[英]Excel Vba - Type Mismatch Error using parameters

我正在嘗試將代碼切換為使用參數。 我在cmd.Execute rs行上收到類型不匹配錯誤。 我認為這將是我的變量與訪問中的變量不匹配,但是我已經檢查並確保所有內容都相同。

    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 因為不cmd.Execute所以出現類型不匹配錯誤。執行適當的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM