首页 > 解决方案 > 如果条件导致异常。如何纠正?

问题描述

我有以下代码:

For i = 0 To dt3.Rows.Count - 1

            If dt3.Rows(i).Item("tablename") <> oldtablename Then

                oldtablename = dt3.Rows(i).Item("tablename")

                *****SOME CODE HERE******

            Else

                *****SOME CODE HERE******
            End If


            If i = dt3.Rows.Count-1 Or oldtablename <> dt3.Rows(i + 1).Item("tablename") Then
                ''time to build up the query and execute it...
                query = query1 & query2 
                dtCDV = executequery(query)

            End If

        Next

最后一个 IF 会导致异常,因为 dt3.rows(i+1)... 大于到达最后一行时的行数。我需要在 2 种情况下执行最后一个 if 条件:

1) 如果我们在 for 循环的最后一次迭代中 2) 如果 oldtablename 与下一行中包含的变量不同(如果下一行存在...)

这怎么能正确写?

谢谢

标签: vb.netif-statement

解决方案


您可以尝试以下解决方案,在最后一个条件下使用OrElse而不是:Orif

For i As Integer = 0 To dt3.Rows.Count - 1

    If dt3.Rows(i)("tablename") <> oldtablename Then
        oldtablename = dt3.Rows(i)("tablename")

        'some code here
    Else

        'some code here
    End If

     If i = dt3.Rows.Count-1 OrElse oldtablename <> dt3.Rows(i + 1)("tablename") Then

         'time to build up the query and execute it...
         query = query1 & query2 
         dtCDV = executequery(query)
     End If
 Next

在这种情况下,条件的右侧部分 ( ) 仅在条件的左侧部分 ( )oldtablename <> dt3.Rows(i + 1)("tablename")为 时才被评估。i = dt3.Rows.Count-1False


推荐阅读