VB6超过10个用于存储过程的参数

时间:2019-07-25 08:22:51

标签: sql-server vb6

当我尝试插入大于10的参数时,vb6出现问题,下面的9很好。

当我尝试从'@ 1'到'@ 9'的时候,输出将是strsql ='1st value'...'9th value',但是当我使用10参数时,它将输出strsql ='@ 1 '...'@ 10'

Set rsOR = New ADODB.Recordset
    strSql = SQLParams("DB..sp_Insert '@1','@2','@3','@4','@5','@6','@7','@8','@9','@10'", cbPayor.Text, "COLLECTION", txtORCol.Text, dtCol.Value, UserID, CollectionType, txtAmountCol.Text, "PHP", dtColCash.Value, txtCheque.Text)
    clsSession.Execute strSql, rsOR

使用没有错误

'@1'...'@9'
FROM: strSql = SQLParams("DB..sp_Insert '@1',...,'@9'", cbPayor.Text, "COLLECTION")

输出:strsql "DB..sp_Insert 'text here',.... ,'COLLECTION'

使用错误

'@1'...'@10'
FROM: strSql = SQLParams("DB..sp_Insert '@1',...,'@10'", cbPayor.Text, "COLLECTION")

输出:strsql "DB..sp_Insert '@1'...'@10'

1 个答案:

答案 0 :(得分:0)

经过一番谷歌搜索后,我发现了这一点(应该没有9个字段限制):

Dim strSQL As String
Dim cmd As New ADODB.Command

strSQL = "UPDATE MyTable SET " & vbNewLine _
& " NEEDS_ID = @NEEDS_ID, " & vbNewLine _
& " OBJ_ID = @OBJ_ID, " & vbNewLine _
& " OBJ_COMMENTS = @OBJ_COMMENTS, " & vbNewLine _
& " TIME21_ID = @TIME21_ID, " & vbNewLine _
& " WHERE ID = @WHEREID"

With cmd
    .ActiveConnection = Cn
    .CommandText = strSQL
    .Parameters.Append .CreateParameter("@NEEDS_ID", adInteger, adParamInput, 2, 12)
    .Parameters.Append .CreateParameter("@OBJ_ID", adInteger, adParamInput, 2, 23)
    .Parameters.Append .CreateParameter("@OBJ_COMMENTS", adVarChar, adParamInput, 250, "Some text")
    .Parameters.Append .CreateParameter("@TIME21_ID", adInteger, adParamInput, 2, 34)
    .Parameters.Append .CreateParameter("@WHEREID", adInteger, adParamInput, 18, 456)
    .Execute
End With