VB在循环中调用存储过程第二次循环时提示错误

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")

试过的方法

我想要达到的结果

Set param = cmd.CreateParameter(" @strWhere", adChar, adParamInput, 400, strWhere)
给存储过程传了5个参数。你的存储过程能接收几个参数呢