以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  循环中使用储存过程返回值出错?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148415)

--  作者:happyft
--  发布时间:2020/4/7 16:09:00
--  循环中使用储存过程返回值出错?
Dim pr As Row = Tables(e.form.Name & "_主表").current
If pr IsNot Nothing Then
    \'--BOM完整性检查
    Dim drs As List(of DataRow) = DataTables(e.form.Name & "_明细").Select("订单编号 = \'" & pr("订单编号") & "\'" )
    If drs.count > 0 Then
        Dim cmd As new SQLCommand
        cmd.ConnectionName = Mydata
        For Each dr As DataRow In drs
            cmd.CommandText = "exec usp_bom_chk10 ?,? output"
            cmd.Parameters.Add("@产品编码",dr("产品编码")) \'输入参数
            cmd.Parameters.Add("@返回值", "", True) \'输出参数
            cmd.ExecuteNonQuery
            dr("BOM检查") = cmd.Parameters("@返回值")
            msgbox(110)
        Next
    End If
End If

上述代码循环第一次可以正确显示110,后面就出错了
错误提示为"已添加了具有相同键的项。"
请问下要如何处理,谢谢!



--  作者:有点蓝
--  发布时间:2020/4/7 16:28:00
--  
        For Each dr As DataRow In drs
            cmd.CommandText = "exec usp_bom_chk10 ?,? output"
cmd.Parameters.clear
            cmd.Parameters.Add("@产品编码",dr("产品编码")) \'输入参数
            cmd.Parameters.Add("@返回值", "", True) \'输出参数
            cmd.ExecuteNonQuery
            dr("BOM检查") = cmd.Parameters("@返回值")
            msgbox(110)