我一直试图一次遍历两个数据表,使用嵌套for循环来比较它们,但外部循环不会超出条件变量。
query_strg = "my query"
rs = New SqlCommand(query_strg, myconn)
adap.SelectCommand = rs
adap.Fill(dset)
count = dset.Rows.Count
For k = 0 To (count - 1)
For j = 0 To (dset1.Rows.Count - 1)
If (dset1.Rows(j)("name2").ToString() =dset.Rows(k)("name1").ToString()
OrElse (dset.Rows(k)("name2").ToString() = "General"
OrElse (dset.Rows(k)("name2").ToString() = "general"
OrElse (dset.Rows(k)("name2").ToString() = "Reports")))) Then
dset.Tables(0).Rows(k).Delete()
dset.Tables(0).AcceptChanges()
count = dset.Tables(0).Rows.Count
End If
Next j
Next k
这是我的代码.... dset只包含单列,dset1包含5列。我需要将dset1中的单个列与dset进行比较,如果相等,我需要删除该列,并且还执行了其他必需的比较....
但问题是外部for循环超出了限制,导致其中一个if条件抛出异常为“No row available no no”。类似的东西......
需要知道为什么for循环超出界限,如果没有解决方案......我需要另一个想法来执行此操作。
答案 0 :(得分:0)
试试这个......
Dim dr, dr1 as DataRow
count = dset.tables(0).Rows.Count
For k = 0 To (count - 1)
If k > dset1.Tables(0).Rows.Count - 1 Then Exit For
dr = dset.tables(0).Rows(k)
For j = 0 To (dset1.Tables(0).Rows.Count - 1)
dr1 = dset1.tables(0).Rows(j)
If (dr1("name2").ToString() = dr("name1").ToString()
OrElse (UCase(dr("name2").ToString()) = "GENERAL"
OrElse (dr("name2").ToString() = "Reports")))) Then
dset.Tables(0).Rows(k).Delete()
dset.Tables(0).AcceptChanges()
count = dset.Tables(0).Rows.Count
End If
Next j
Next k