Foxtable(狐表)用户栏目专家坐堂 → [求助]带统计目录树的筛选条件


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

主题:[求助]带统计目录树的筛选条件

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]带统计目录树的筛选条件  发帖心情 Post By:2017/10/21 13:36:00 [只看该作者]

在窗口对“数据表”的本月结案数筛选,目录树显示统计数据。下列代码点击目录树时,表的筛选不对,哪里问题?谢谢!

 

'目录树筛选条件--获取本月结案数据

Dim  y As  Integer =  Date.Today.Year
Dim  m As  Integer =  Date.Today.Month
Dim  dt1 As  New  Date(y,  m,  1)
Dim  dt2 As  New  Date(y,  m,  Date.DaysInMonth(y,  m))  '获取本月的最后一天
Dim  Filter As  String
Filter =  "结案日期 >= #"  &  dt1  &  "# And  结案日期 <= #"  &  dt2  &  "#"
Tables("数据表").Filter =  Filter


'生成统计表
Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("数据表"),Filter)
b.Groups.AddDef("承办人")
b.Totals.AddDef("案号",AggregateEnum.Count,"案件数")      '根据案号列来统计记录数,也就是案件数
dt = b.Build       '参数设置为False,生成一个临时表,不在主界面显示


'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"承办人")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim bm As String = nd.DataRow("承办人")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & dt.Compute("Sum(案件数)","承办人 = '" & bm & "'") & "件)"
    End Select
Next
trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(案件数)") & "件)",0)
trv.ResumeRedraw

 

附件:

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:本月结案.table

[此贴子已经被作者于2017/10/21 14:10:23编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107727 积分:547968 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/21 14:12:00 [只看该作者]

dt = b.Build(true)

怎么样个不对,截图说明

直接b.Build,生成统计表到主表,看统计表结果是否正确

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/10/21 14:28:00 [只看该作者]

目录树形成后,窗口表没有筛选,点击目录树节点,也不筛选。单击节点代码:

 

Dim Filter As String = ""   '带统计的点击事件

Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
Dim Value As String
Value = e.Node.Name
If e.node.Name <> "显示所有行" Then '要用Name属性,不能用Text属性
    Select Case e.Node.Level
        Case 0
            Filter = "[承办人] = '" & dr("承办人") & "'"
        End Select
End If
Tables("本月结案_Table1").Filter = Filter


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107727 积分:547968 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/21 14:42:00 [只看该作者]

弹出筛选条件看看

msgbox(Filter)

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/10/21 15:21:00 [只看该作者]

弹出的筛选条件是对的。

我在afterload加了句,窗口表显示也对了:

目录树筛选条件--获取本月结案数据

Dim  y As  Integer =  Date.Today.Year
Dim  m As  Integer =  Date.Today.Month
Dim  dt1 As  New  Date(y,  m,  1)
Dim  dt2 As  New  Date(y,  m,  Date.DaysInMonth(y,  m))  '获取本月的最后一天
Dim  Filter As  String
Filter =  "结案日期 >= #"  &  dt1  &  "# And  结案日期 <= #"  &  dt2  &  "#"

’Tables("数据表").Filter =  Filter

Tables("本月结案_Table1").Filter = Filter

......

 

现在的问题是点击目录树时需要再加上这个条件,Tables("本月结案_Table1").Filter = Filter

 

Select Case e.Node.Level
        Case 0
            Filter = "[承办人] = '" & dr("承办人") & "'"---------------这句怎么改?
End Select


此主题相关图片如下:1111111.png
按此在新窗口浏览图片
[此贴子已经被作者于2017/10/21 15:21:47编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107727 积分:547968 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/21 15:24:00 [只看该作者]

Filter = "[承办人] = '" & dr("承办人") & "' and " & Tables("本月结案_Table1").Filter

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/10/21 15:39:00 [只看该作者]

点第一次,筛选正确;再点第二个节点,就没有数据了...

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/10/21 15:42:00 [只看该作者]

单击节点代码:

Dim Filter As String = ""   '带统计的点击事件

Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
Dim Value As String
Value = e.Node.Name
If e.node.Name <> "显示所有行" Then '要用Name属性,不能用Text属性
    Select Case e.Node.Level
        Case 0
            ‘Filter = "[承办人] = '" & dr("承办人") & "'"

        Filter = "[承办人] = '" & dr("承办人") & "' and " & Tables("本月结案_Table1").Filter 
        End Select
End If
Tables("本月结案_Table1").Filter = Filter


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107727 积分:547968 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/21 15:56:00 [只看该作者]

Dim Filter As String = ""   '带统计的点击事件

Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
Dim Value As String
Value = e.Node.Name
If e.node.Name <> "显示所有行" Then '要用Name属性,不能用Text属性
    Select Case e.Node.Level
        Case 0
            ‘Filter = "[承办人] = '" & dr("承办人") & "'"

Dim  y As  Integer =  Date.Today.Year
Dim  m As  Integer =  Date.Today.Month
Dim  dt1 As  New  Date(y,  m,  1)
Dim  dt2 As  New  Date(y,  m,  Date.DaysInMonth(y,  m))  '获取本月的最后一天

        Filter = "[承办人] = '" & dr("承办人") & "' and 结案日期 >= #"  &  dt1  &  "# And  结案日期 <= #"  &  dt2  &  "#"
        End Select
End If
Tables("本月结案_Table1").Filter = Filter


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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/10/21 22:13:00 [只看该作者]

打开窗口后,显示正确,点击每个承办人,筛选也正确。

再次点击   "显示所有行" 时,就显示整个datatable数据了。

反过头来,再点击每个承办人,还是正确。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

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