0

我搜索了其他论坛,并在每个代码示例中了解了为什么返回此错误,但无法看到它为什么会返回到我的代码中,因为我只有声明'intReleaseMasterID'一次。我试图将在循环外部声明和确定的变量传递给循环,并在循环的每次迭代中使用相同的变量 - 可以这样做吗?有什么建议么?变量'SQ_LIB'在封闭块中隐藏了一个变量

Protected Sub btnOrder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOrder.Click 
    Dim SQ_LIB As New SQL_Lib 
    Dim intReleaseMasterID As Integer 
    Dim param(1) As SqlParameter 
    param(0) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
    param(1) = SQ_LIB.AddParameter("@ReleaseMasterID", Data.ParameterDirection.Output, 0) 
    SQ_LIB.RunProcedure("ReleaseMasterToPrimaryLocation", param) 
    intReleaseMasterID = CInt(param(1).Value) 

    For Each item As GridDataItem In RadGrid1.SelectedItems 
     Response.Write(item("InventoryDetailSerialID").Text.ToString()) 
     Dim strInventoryDetailSerialID As String = item.GetDataKeyValue("InventoryDetailSerialID") 
     Dim SQ_LIB As New SQL_Lib 
     Dim param(2) As SqlParameter 
     param(0) = SQ_LIB.AddParameter("@InventoryDetailSerialID", strInventoryDetailSerialID) 
     param(1) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
     param(2) = SQ_LIB.AddParameter("@ReleaseMasterID", intReleaseMasterID) 
     SQ_LIB.RunProcedure("ReleaseDetailsToPrimaryLocation", param) 
    Next 
End Sub 

我添加了另一个子程序,这样的参数变量不在同一范围,但无论是CreatePartOrders子程序从来没有运行或不能从RadGrid1.SelectedItems获取信息或者说我没有通过intReleaseMasterID正确变量。这是什么?

Protected Sub btnOrder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOrder.Click 
    Dim SQ_LIB As New SQL_Lib 
    Dim intReleaseMasterID As Integer 
    Dim param(1) As SqlParameter 
    param(0) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
    param(1) = SQ_LIB.AddParameter("@ReleaseMasterID", Data.ParameterDirection.Output, 0) 
    SQ_LIB.RunProcedure("ReleaseMasterToPrimaryLocation", param) 
    intReleaseMasterID = CInt(param(1).Value) 

    CreatePartOrders(intReleaseMasterID) 
End Sub 
___________________________________________________________ 
Public Sub CreatePartOrders(ByVal intReleaseMasterID As Integer) 
    For Each item As GridDataItem In RadGrid1.SelectedItems 
     Response.Write(item("InventoryDetailSerialID").Text.ToString()) 
     Dim strInventoryDetailSerialID As String = item.GetDataKeyValue("InventoryDetailSerialID") 
     Dim SQ_LIB As New SQL_Lib 
     Dim param(2) As SqlParameter 
     param(0) = SQ_LIB.AddParameter("@InventoryDetailSerialID", strInventoryDetailSerialID) 
     param(1) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
     param(2) = SQ_LIB.AddParameter("@ReleaseMasterID", intReleaseMasterID) 
     SQ_LIB.RunProcedure("ReleaseDetailsToPrimaryLocation", param) 
    Next 
End Sub 
+0

什么是错误? – Miki 2014-10-16 20:19:15

+0

@Miki - 错误与帖子标题相同。 – BarryD 2014-10-17 13:14:26

回答

0

您在两个地方,下面标注创建SQL_Lib ...

Protected Sub btnOrder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOrder.Click 
    Dim SQ_LIB As New SQL_Lib **HERE is number 1** 
    Dim intReleaseMasterID As Integer 
    Dim param(1) As SqlParameter 
    param(0) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
    param(1) = SQ_LIB.AddParameter("@ReleaseMasterID", Data.ParameterDirection.Output, 0) 
    SQ_LIB.RunProcedure("ReleaseMasterToPrimaryLocation", param) 
    intReleaseMasterID = CInt(param(1).Value) 

    For Each item As GridDataItem In RadGrid1.SelectedItems 
     Response.Write(item("InventoryDetailSerialID").Text.ToString()) 
     Dim strInventoryDetailSerialID As String = item.GetDataKeyValue("InventoryDetailSerialID") 
     Dim SQ_LIB As New SQL_Lib **HERE is number 2** 
     Dim param(2) As SqlParameter 
     param(0) = SQ_LIB.AddParameter("@InventoryDetailSerialID", strInventoryDetailSerialID) 
     param(1) = SQ_LIB.AddParameter("@UserName", Membership.GetUser().UserName) 
     param(2) = SQ_LIB.AddParameter("@ReleaseMasterID", intReleaseMasterID) 
     SQ_LIB.RunProcedure("ReleaseDetailsToPrimaryLocation", param) 
    Next 
End Sub 

您正在使用暗淡至于两次申报。

+0

(感谢您的快速响应!)我将'Dim SQL_LIB'的第二个实例更改为'Dim SQL_LIB2'(及相应的参数),现在变量'param'隐藏了一个封闭块中的变量。我认为真正的问题是“intReleaseMasterID”变量。有任何想法吗? – BarryD 2014-10-16 20:59:17

+0

恩,不...... Dim param(1)和Dim param(2)被认为是变量的相同名称,尽管它们有不同的数组大小,但您也声明了两次。 – guildsbounty 2014-10-16 21:03:01

+0

查看上面的编辑和问题。 (我对继续提出的问题表示歉意,并且我确信我的经验不足) – BarryD 2014-10-17 13:21:39