Foxtable(狐表)用户栏目专家坐堂 → [求助]设置5层,有季度的筛选树的问题


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

主题:[求助]设置5层,有季度的筛选树的问题

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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
[求助]设置5层,有季度的筛选树的问题  发帖心情 Post By:2014/12/25 8:07:00 [只看该作者]

做一个带统计的筛选树(信息登记窗口/筛选树1),按照:年/季度/月/单位/拟稿人来分层,请教如何写代码。特别是季度如何生成筛选。
另外,如何生成:单位/拟稿人/季度;时间在后边的带统计的筛选树(信息登记窗口/筛选树2)
所有用户密码都是 888

[此贴子已经被作者于2014-12-25 15:10:57编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/12/25 8:16:00 [只看该作者]


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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
  发帖心情 Post By:2014/12/25 9:55:00 [只看该作者]

我是按照这个改的,但层太多,搞的有些晕,希望指点一下。

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


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

For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim jidu As Integer = nd.DataRow("季")
    Dim Month As Integer = nd.DataRow("月")
    Dim dwmc As String = nd.DataRow("单位名称")
    Dim zgr As String = nd.DataRow("撰稿人")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(记录数)","年 = " & Year) & "条" & dt.Compute("Sum(奖金)","年 = " & Year) & "元)"
        Case 1
            nd.Text = nd.text & "季(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu) & "元)"
        Case 2
            nd.Text = nd.text & "月(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu & " And 月 = " & Month) & "元)"
        Case 3
            nd.Text = nd.text & "(" & nd.DataRow("记录数") & "条)" & nd.DataRow("奖金") & "元)"
    End Select
Next

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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
  发帖心情 Post By:2014/12/25 11:13:00 [只看该作者]

谢谢,但第4层的统计数据不正确,我进行了修改,多加了一个“单位名称”的筛选条件,红色背景部分,但代码好像写的有错误,我不知道该怎么改?


For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim jidu As Integer = nd.DataRow("季")
    Dim Month As Integer = nd.DataRow("月")
    Dim dwmc As String = nd.DataRow("单位名称")
    Dim zgr As String = nd.DataRow("撰稿人")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(记录数)","年 = " & Year) & "条" & dt.Compute("Sum(奖金)","年 = " & Year) & "元)"
        Case 1
            nd.Text = nd.text & "季(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu) & "元)"
        Case 2
            nd.Text = nd.text & "月(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu & " And 月 = " & Month) & "元)"
        Case 3
            nd.Text = nd.text & "(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month & " and 单位名称 = " & dwmc) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month & " and 单位名称 = " & dwmc) & "元)"
        Case 4
            nd.Text = nd.text & "(" & nd.DataRow("记录数") & "条" & nd.DataRow("奖金") & "元)"
    End Select
Next


此问题已解决

 Case 3
            nd.Text = nd.text & "(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季度 = " & jidu & " and 月 = " & Month & " and 单位名称 = '" & dwmc & "'") & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季度 = " & jidu & " and 月 = " & Month & " and 单位名称 = '" & dwmc &"'") & "元)"

[此贴子已经被作者于2014-12-25 11:24:47编辑过]

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


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

 Case 3
            nd.Text = nd.text & "(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month & " and 单位名称 = '" & dwmc & "'") & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季 = " & jidu & " and 月 = " & Month & " and 单位名称 = '" & dwmc & "'") & "元)"

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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
  发帖心情 Post By:2014/12/25 11:34:00 [只看该作者]

 季度的筛选时间条件怎么写啊?

这里有年的和月的,季度的怎么写

Dim Filter As String = ""
If e.node.Name <> "显示所有记录" Then
    Dim d1 As Date
    Dim d2 As Date
    Dim Year As Integer = e.note.DataRow("年")
    Dim jidu As Integer = e.note.DataRow("季度")
    Dim Month As Integer = e.note.DataRow("月")
    Dim dwmc As String = e.note.DataRow("单位名称")
    Dim zgr As String = e.note.DataRow("撰稿人")
    Select Case e.Node.Level
        Case 0
            d1 = New Date(Year,1,1) '取得该年的第一天
            d2 = new Date(Year,12,31) '取得该年的最后一天
            Filter = "刊发日期 >= #" & d1 & "# And 刊发日期 <= #" & d2 & "#"
        Case 1
            d1 = New Date(Year, Month, 1) '取得该月的第一天
            d2 = new Date(Year, Month, Date.DaysInMonth(Year,Month)) '取得该月的最后一天
            Filter = "刊发日期 >= #" & d1 & "# And 刊发日期 <= #" & d2 & "#"
        Case 2
            d1 = New Date(Year, Month, 1) '取得该月的第一天
            d2 = new Date(Year, Month, Date.DaysInMonth(Year,Month)) '取得该月的最后一天
            Filter = "刊发日期 >= #" & d1 & "# And 刊发日期 <= #" & d2 & "# And 单位名称 = '" & dwmc & "'"
    End Select
End If
Tables("信息宣传").Filter = Filter


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


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


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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
  发帖心情 Post By:2014/12/25 13:45:00 [只看该作者]

 这个筛选的逻辑是这样,每个季度发一次奖金,每个季度之下是每个社区多少钱,然后是每个社区下每个月的详情和是谁发的稿

层次应该是  年/季度/社区/月/人
我的代码弄完之后,同一季度下社区名称出现了重复,请问代码应该如何修正

图片点击可在新窗口打开查看此主题相关图片如下:筛选代码.jpg
图片点击可在新窗口打开查看
 

Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("信息宣传"))
b.Groups.AddDef("刊发日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("刊发日期",DateGroupEnum.Quarter,"季度")
b.Groups.AddDef("单位名称")
b.Groups.AddDef("刊发日期",DateGroupEnum.Month,"月")
b.Groups.AddDef("撰稿人")
b.Totals.AddDef("刊发日期",AggregateEnum.count,"记录数")
b.Totals.AddDef("奖金",AggregateEnum.sum,"奖金") '根据客户列来统计记录数,也就是订单数
dt = b.Build(False) '参数设置为False,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树

Dim trv As WinForm.TreeView = Forms("信息登记").Controls("TreeView1")
trv.BuildTree(dt, "年|季度|单位名称|月|撰稿人","","年 desc,季度 desc,月 desc")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim jidu As Integer = nd.DataRow("季度")
Dim dwmc As String = nd.DataRow("单位名称")
    Dim Month As Integer = nd.DataRow("月")
    
    Dim zgr As String = nd.DataRow("撰稿人")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(记录数)","年 = " & Year) & "条" & dt.Compute("Sum(奖金)","年 = " & Year) & "元)"
        Case 1
            nd.Text = nd.text & "季度(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季度 = " & jidu) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季度 = " & jidu) & "元)"
        Case 2
            nd.Text = nd.text & "(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季度 = " & jidu & " and 单位名称 = '" & dwmc & "'") & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季度 = " & jidu & " And 单位名称 = '" & dwmc & "'") & "元)"
        Case 3
            nd.Text = nd.text & "月(" & dt.Compute("Sum(记录数)","年 = " & Year & " And 季度 = " & jidu & " and 单位名称 = '" & dwmc & "' and 月 = " & Month) & "条" & dt.Compute("Sum(奖金)","年 = " & Year & " And 季度 = " & jidu & " and 单位名称 = '" & dwmc &"' And 月 = " & Month) & "元)"
        Case 4
            nd.Text = nd.text & "(" & nd.DataRow("记录数") & "条" & nd.DataRow("奖金") & "元)"
    End Select
Next
trv.Nodes.Insert("显示所有记录","显示所有记录(" & dt.Compute("Sum(记录数)") & "条" & dt.Compute("Sum(奖金)") & "元)",0)
trv.ResumeRedraw

[此贴子已经被作者于2014-12-25 14:06:00编辑过]

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


加好友 发短信
等级:童狐 帖子:267 积分:2574 威望:0 精华:0 注册:2008/11/9 18:30:00
  发帖心情 Post By:2014/12/25 14:15:00 [只看该作者]

trv.BuildTree(dt, "年|季度|单位名称|月|撰稿人","","年 desc,季度 desc)  

解决了,排序问题,这样就ok了

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