for下一个循环不会结束,它将返回超出范围的索引



我有5列,我必须删除数据库中已经存在的行,以便将数据库中不存在的其余行插入数据库。。但我仍然有一个索引超出范围的错误。必须是非负数并且小于集合的大小。参数名称:索引。。

问题是,即使datagridview的最后一行已经到达..,for下一个循环也不会结束。。

我已将allowusertoaddrows的属性设置为false。。

这是我的密码。。

Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click
        Dim rctr, x As Integer
        Dim con As SqlConnection = New SqlConnection("Server=ITS-CODER02DIBMART; Initial Catalog = HiKLotMgt; User Id= sa; Password = evadkram!@#;")
        con.Open()
        For x = 0 To gridhik.Rows.Count - 1
            cerlotno = gridhik.Item(2, x).Value
            sqlexist = "Select * from tblHikLotMgtDB where CeramicLotNo = '" & cerlotno & "'"
            Dim cmd1 As SqlCommand = New SqlCommand(sqlexist, con)
            Dim rdr As SqlDataReader = cmd1.ExecuteReader
            If rdr.HasRows Then
                MsgBox("Ceramic Lot No: " + cerlotno + " already exists and will be deleted.", vbInformation)
                gridhik.Rows.Remove(gridhik.Rows(x))
                x = x - 1
            End If
            rdr.Close()
        Next
        MsgBox("Ready for Saving....", vbInformation)
    End Sub

提前感谢那些提供帮助的人。。谢谢

假设网格最初有10行,0-9。您正在移除循环中的网格行,这意味着不再有原来的10行,因此最后一行现在是(8),(9)不再存在;这就是为什么你会得到你的索引超出范围的错误。重新调整循环,使其从最后一行开始并结束(例如,对于x=gridhik)。Rows.Count-1 To 0 step-1

最新更新