【问题标题】:System.ArgumentOutOfRangeException in For loop due to entry deleted from database. Help fix it由于从数据库中删除的条目,For 循环中的 System.ArgumentOutOfRangeException。帮忙修一下
【发布时间】:2015-06-19 07:42:30
【问题描述】:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim TimeNow As DateTime
    TimeNow = DateTime.Now
    With ReservationTableDataGridView
        For i As Integer = 0 To (.Rows.Count - 1)
            ListView1.BackColor = Color.Black
            Dim ToBeTested As DateTime
            ToBeTested = (.Rows(i).Cells(1).Value) #
            Console.WriteLine(ToBeTested)
            If ToBeTested > TimeNow.AddMinutes(45) Then
                Me.ReservationTableTableAdapter.Delete((.Rows(i).Cells(4).Value), (.Rows(i).Cells(1).Value), (.Rows(i).Cells(2).Value), (.Rows(i).Cells(3).Value))
                Me.ReservationTableTableAdapter.Fill(Me.CustomerResDataBaseDataSet.ReservationTable)
            End If
        Next
    End With
End Sub

我正在尝试编写一些代码,以便在设置的预订时间过去 45 分钟后从数据库中删除预订。我不断收到 System.ArgumentOutOfRangeException 错误。我相信这是因为从数据库中删除一个项目后,它的值比索引少。谁能帮我解决这个问题?

这是得到的错误,{“索引超出范围。必须是非负数并且小于集合的大小。 参数名称:index"}。我相信这是由于 '#" 行造成的。

【问题讨论】:

  • 尝试倒退 - For i As Integer = (.Rows.Count - 1) to 0 Step -1 看看是否仍然出现同样的错误。

标签: database vb.net for-loop indexing


【解决方案1】:

尝试倒退 - For i As Integer = (.Rows.Count - 1) to 0 Step -1

问题是您在尝试迭代 ReservationTableDataGridView 中的行时删除了它们,从而更改了索引。

通过向后追溯,您总是有一个有效的索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多