我有以下代码:
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不同于下一行中包含的变量(如果下一行存在...)
怎么写得好呢?
谢谢
您可以尝试以下解决方案,在最后一个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
)。