Foxtable(狐表)用户栏目专家坐堂 → [求助]关于数据分拣的函数如何编写


  共有2932人关注过本帖树形打印复制链接

主题:[求助]关于数据分拣的函数如何编写

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 12:11:00 [显示全部帖子]

Dim num1 As Integer = 880
Dim num2 As Integer = 600
Dim count As Integer = 13
Dim idx As Integer = 1
Dim dt As DataTable = DataTables("分拣数据")
Dim drs As List(Of DataRow) = dt.Select("", "参数1 desc")
dt.ReplaceFor("新组号", Nothing)
dt.ReplaceFor("组内序号", Nothing)
For Each dr As DataRow In drs
    If dr.Isnull("新组号") Then
        Dim filter As String = "新组号 is null and 参数1 >= " & dr("参数1") - num1 & " And 参数2 >= " & dr("参数2") - num2
        Dim gdrs As List(Of DataRow) = dt.Select(filter, "参数1 desc")
        If gdrs.Count >= count Then
            For i As Integer = 0 To count - 1
                gdrs(i)("新组号") = idx
                gdrs(i)("组内序号") = i + 1
            Next
            idx += 1
        End If
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 14:07:00 [显示全部帖子]

无语,代码执行没问题。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 14:21:00 [显示全部帖子]

 

[此贴子已经被作者于2015/8/26 14:21:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 14:24:00 [显示全部帖子]

逻辑上没有问题,循环了每一行,只要满足条件就形成了分组

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 15:28:00 [显示全部帖子]

 

Dim num1 As Integer = 880
Dim num2 As Integer = 600
Dim count As Integer = 13
Dim idx As Integer = 1
Dim dt As DataTable = DataTables("分拣数据")
Dim drs As List(Of DataRow) = dt.Select("", "参数1 desc")
dt.ReplaceFor("新组号", Nothing)
dt.ReplaceFor("组内序号", Nothing)
For Each dr As DataRow In drs
    If dr.Isnull("新组号") Then
        Dim filter As String = "新组号 is null and  参数1 <= " & dr("参数1") & " and 参数1 >= " & dr("参数1") - num1
        Dim gdrs As List(Of DataRow) = dt.Select(filter, "参数2 desc")
        If gdrs.Count >= count Then
            Dim pos As Integer
            For i As Integer = 0 To gdrs.count - 1
                If gdrs(i)("_Identify") = dr("_Identify")
                    pos = i
                    Exit For
                End If
            Next

            For i As Integer = 0 To gdrs.Count - count
                If i<=pos AndAlso i+count>pos Then
                    If gdrs(i)("参数2") - gdrs(i+count-1)("参数2") <= num2 Then
                        For j As Integer = i To i+count - 1
                            gdrs(j)("新组号") = idx
                            gdrs(j)("组内序号") = j-i+1
                        Next
                        idx += 1
                        Exit For
                    End If
                End If
            Next
        End If
    End If
Next

[此贴子已经被作者于2015/8/26 16:18:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 16:16:00 [显示全部帖子]

不可能,上传实例说明。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 16:16:00 [显示全部帖子]

逻辑自己看。

 回到顶部