我有5列,我必须删除我的数据库中已存在的行,以便我的数据库中不存在的剩余行已准备好插入数据库..但仍然我有一个错误的索引已经范围。必须是非负数且小于集合的大小。 参数名称:index ..
问题是,即使datagridview的lastrow已经达到,下一个循环也不会结束..
我已将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-CODER02\DIBMART; 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
提前感谢那些帮助的人......谢谢......
答案 0 :(得分:1)
假设网格最初有10行,0-9。 您正在删除循环中的网格行,这意味着不再有原始的10行,因此最后一行现在是(8),并且(9)不再存在;这就是为什么你的索引超出范围错误。 重构你的循环,使它从最后一行开始并向下收起,即对于x = gridhik.Rows.Count - 1到0步-1 -