Foxtable(狐表)用户栏目专家坐堂 → 求助:自动进行记录列值调整


  共有1838人关注过本帖平板打印复制链接

主题:求助:自动进行记录列值调整

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/11 18:45:00 [只看该作者]

汗,递归就不写了麻烦,直接判断。

 

下面代码只做了两种情况的判断,你扩展一下写。

 

Dim dt1 As DataTable = DataTables("希望调整后统计结果")
Dim dt2 As DataTable = DataTables("原始数据")
Dim dtb As new DataTableBuilder("测试")
dtb.AddDef("编号", Gettype(String), 32)
dtb.AddDef("数据一", Gettype(String), 32)
dtb.AddDef("数据二", Gettype(String), 32)
dtb.AddDef("数据三", Gettype(String),32)
dtb.Build()
Dim dt3 As DataTable = DataTables("测试")
dt3.AddNew(dt2.DataRows.count)
Dim ary() As String = {"数据一", "数据二", "数据三"}
Dim drs = dt1.Select("科目 <> '总计'")
For Each c As String In ary
    Dim idx As Integer = 0
    For Each dr As DataRow In drs
        For i As Integer = idx To idx+dr(c)-1
            dt3.DataRows(i)(c) = dr("科目")
        Next
        idx += dr(c)
    Next
Next
For i As Integer = 0 To 10 '测试少量数据
    Dim dr As DataRow = dt2.DataRows(i)
   
    'Dim ls As new List(Of String)
    'ls.add(dr("数据一"))
    'ls.add(dr("数据二"))
    'ls.add(dr("数据三"))
   
    'Dim flag As Boolean = False
    'For Each cdr As DataRow In dt3.DataRows
    'If cdr.Isnull("编号") Then
    'If ls.Contains(cdr("数据一")) AndAlso ls.Contains(cdr("数据二")) AndAlso ls.Contains(cdr("数据三")) AndAlso cdr("数据一") <> cdr("数据二") AndAlso cdr("数据一") <> cdr("数据三") AndAlso cdr("数据三") <> cdr("数据二")Then
    'flag = True
    'cdr("编号") = dr("编号")
    'Exit For
    'End If
    'End If
    'Next
   
   
    Dim temp As String = ""
    For Each cdr As DataRow In dt3.DataRows
        If cdr.Isnull("编号") Then
            If dr("数据一") = cdr("数据一") OrElse dr("数据一") = cdr("数据二") OrElse dr("数据一") = cdr("数据三") Then
                If dr("数据一") = cdr("数据一") Then
                    For Each ccdr As DataRow In dt3.DataRows
                        If ccdr.Isnull("编号") Then
                            If dr("数据二") = ccdr("数据二") OrElse dr("数据二") = ccdr("数据三") Then
                                If dr("数据二") = ccdr("数据二") Then
                                    For Each cccdr As DataRow In dt3.DataRows
                                        If cccdr.Isnull("编号") Then
                                            If dr("数据三") = cccdr("数据三") Then
                                                cdr("编号") = dr("编号")
                                                temp = cdr("数据三")
                                                cdr("数据三") = cccdr("数据三")
                                                cccdr("数据三") = temp
                                                temp = cdr("数据二")
                                                cdr("数据二") = ccdr("数据二")
                                                ccdr("数据二") = temp

                                                Exit For
                                            End If
                                        End If
                                    Next
                                ElseIf dr("数据二") = ccdr("数据三") Then
                                    For Each cccdr As DataRow In dt3.DataRows
                                        If cccdr.Isnull("编号") Then
                                            If dr("数据三") = cccdr("数据二") Then
                                                cdr("编号") = dr("编号")
                                                temp = cdr("数据二")
                                                cdr("数据二") = cccdr("数据二")
                                                cccdr("数据二") = temp
                                                temp = cdr("数据三")
                                                cdr("数据三") = ccdr("数据三")
                                                ccdr("数据三") = temp

                                                Exit For
                                            End If
                                        End If
                                    Next

                                End If
                                Exit For
                            End If
                        End If
                    Next
                End If
                Exit For
            End If
        End If
    Next
Next
MainTable = Tables("测试")

 


 回到顶部
总数 19 1 2 下一页