簡體   English   中英

參數對象定義不正確錯誤,參數定義似乎正確

[英]Parameter object improperly defined Error, Parameter definitions seem to be correct

我有一個存儲過程,需要6個參數5個輸入和1個輸出。 所有參數似乎都已正確定義(參數名稱,數據類型,輸入或輸出,大小和值)。 我的輸出大小和數據類型似乎不是問題。 但是我有時只會收到錯誤消息“參數對象定義不正確的運行時錯誤3708”。 奇怪的是,如果我使用其他所有等於OptStore或OptCorporate True的值(包括CurrentCnn,adCmdStoredProc等)運行此代碼,則我的代碼運行良好。 如果我還有其他Opt *變量True,那么我會收到此錯誤。 所有strStorNo值都是最多3個字符長的字符串值。 我可以測試我的存儲過程,它會返回我期望的計數值以及在所有情況下都會傳入的存儲過程值。

這是vb6:

138     With cmdSP
140         .ActiveConnection = CurrentCNN
142         .CommandType = adCmdStoredProc
144         .CommandText = "HIcountProducts"
146         If blnUseUPCinSP Then
148             .Parameters.Append .CreateParameter("@upc", adVarChar, adParamInput, 13, objProdB.upc)
150             .Parameters.Append .CreateParameter("@cert_code", adVarChar, adParamInput, 15, Null)
152             .Parameters.Append .CreateParameter("@vendor", adInteger, adParamInput, , Null)
            Else
154             .Parameters.Append .CreateParameter("@upc", adVarChar, adParamInput, 13, Null)
156             .Parameters.Append .CreateParameter("@cert_code", adVarChar, adParamInput, 15, objProdB.cert_code)
158             .Parameters.Append .CreateParameter("@vendor", adInteger, adParamInput, , Null)
            End If
162         If intRetailVer = 2 Then
                If OptStore.Value = True Then
                    .Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
                    .Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 3)
                ElseIf OptCorporate.Value = True Then
                    .Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
                    .Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 6)
                ElseIf OptZones.Value = True Then
                    .Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
                    .Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 2)
                ElseIf OptRegions.Value = True Then
                    .Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
                    .Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 1)
                ElseIf OptClasses.Value = True Then
                    .Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
                    .Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 1)
                End If
            End If
            .Parameters.Append .CreateParameter("@count", adInteger, adParamOutput, 1, 1)
166         .Execute , , adExecuteNoRecords
        End With
168     intRecordCount = cmdSP.Parameters("@count")
170     Set cmdSP = Nothing

我在這里很困惑,除了我的參數定義之外,該參數對象定義不正確還有其他地方嗎?

您正在將@levelType參數定義為adVarChar但正在將Integer傳遞給它。 而是將參數作為String傳遞。

...
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, "2")
...

我用的是"2"而不是2

暫無
暫無

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

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