0

我一直在尝试一次遍历两个数据表以使用嵌套的 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 at no”。类似的东西......

需要知道为什么 for 循环会越界以及是否没有解决方案......我需要一个替代想法来执行此操作。

4

1 回答 1

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
于 2013-07-30T04:25:45.587 回答