1

パラメータを使用するようにコードを切り替えようとしています。cmd.Execute rs 行で Type Mismatch エラーが発生します。私の変数がアクセスしているものと一致しないと思いましたが、すべてが同じであることを確認しました。

    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
4

1 に答える 1

1

コードから次の 3 行を抜き出しました。

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

Command.Execute3 つのオプション引数を受け入れます: RecordsAffected; パラメーター; オプション。それらのどれもRecordset. cmd.Execute適切な引数を与えていないため、型の不一致エラーが発生します。

于 2012-08-09T14:25:31.457 に答える