VB在for循环中调用存储过程,第一次时正常输出查询结果,第二次循环就提示“指定了过多的参数”
Private Sub cmdCX_Click()
Set rs = New ADODB.Recordset
Set cmd = New ADODB.Command
If List1.ListItems.count = 0 Then Exit Sub
cmd.ActiveConnection = ADCPZSXT 'mConn 指定连接的数据库
cmd.CommandText = "[ElectronicTracking].[dbo].[GetJidianqi]" '指定调用的存储过程名称
cmd.CommandType = adCmdStoredProc '将 CommandText 作为存储过程名进行计算
ADCPZSXT.CursorLocation = adUseClient
For I = 1 To List1.ListItems.count
strWhere = Trim(List1.ListItems(I).SubItems(2))
Set param = cmd.CreateParameter(" @strWhere", adChar, adParamInput, 400, strWhere)
'Set param = cmd.CreateParameter(, adChar, adParamInput, 300, strWhere)
cmd.Parameters.Append param
Set rs = cmd.Execute()
List1.ListItems(I).SubItems(3) = IIf(IsNull(rs("产品名称")), "", rs("产品名称"))
List1.ListItems(I).SubItems(4) = IIf(IsNull(rs("图号")), "", rs("图号"))
List1.ListItems(I).SubItems(5) = IIf(IsNull(rs("机械检工作者")), "", rs("机械检工作者"))
List1.ListItems(I).SubItems(6) = IIf(IsNull(rs("机械检扫描员")), "", rs("机械检扫描员"))
List1.ListItems(I).SubItems(7) = IIf(IsNull(rs("电气检工作者")), "", rs("电气检工作者"))
List1.ListItems(I).SubItems(8) = IIf(IsNull(rs("电气检扫描员")), "", rs("电气检扫描员"))
List1.ListItems(I).SubItems(9) = IIf(IsNull(rs("包装扫描员")), "", rs("包装扫描员"))
List1.ListItems(I).SubItems(10) = IIf(IsNull(rs("铁道部条码")), "", "正常")
List1.ListItems(I).SubItems(11) = IIf(IsNull(rs("合同号")), "", rs("合同号"))
List1.ListItems(I).SubItems(12) = IIf(IsNull(rs("车站代码")), "", rs("车站代码"))
Set rs = Nothing
Set param = Nothing
Next
Exit Sub
End Sub
在“ Set rs = cmd.Execute()”这句提示错误,实时错误‘-2147217900(880040e14)' SQL为过程或函数GetJidianqir指定了过多的参数。
我的解答思路和尝https://img-mid.csdnimg.cn/release/static/image/mid/ask/224118863856180.png "#left")
试过的方法