если условие вызывает исключение. Как исправить? - PullRequest
0 голосов
/ 08 марта 2019

у меня есть следующий код:

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 случаях:

1) если мы находимся на последней итерации цикла for 2) если oldtablename отличается от переменной, содержащейся в следующей строке (если следующая строка существует ...)

как это можно правильно написать?

Спасибо

1 Ответ

3 голосов
/ 08 марта 2019

Вы можете попробовать следующее решение, используя OrElse вместо Or в последнем if условии:

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-1) условия имеет значение False.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...