Foxtable(狐表)用户栏目专家坐堂 → 目录树下对逻辑值进行统计问题


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

主题:目录树下对逻辑值进行统计问题

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


加好友 发短信
等级:小狐 帖子:349 积分:3329 威望:0 精华:0 注册:2016/3/8 18:13:00
  发帖心情 Post By:2018/7/24 14:49:00 [只看该作者]

甜老师,我想做的效果是如图
图片点击可在新窗口打开查看此主题相关图片如下:目录树.jpg
图片点击可在新窗口打开查看

只需能列出没开piao的信息。

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


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

Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("产品"))
b.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b.Totals.AddDef("日期",AggregateEnum.Count,"个数") '根据客户列来统计记录数,也就是订单数
b.filter = "是否开piao = false"
dt = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "年|月")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(个数)","年 = " & Year) & "条)"
        Case 1
            nd.Text = nd.text & "月(" & dt.Compute("Sum(个数)","年 = " & Year & " And 月 = " & Month) & "条)"
    End Select
Next
trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("sum(个数)") & "条)",0)
trv.ResumeRedraw

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


加好友 发短信
等级:小狐 帖子:349 积分:3329 威望:0 精华:0 注册:2016/3/8 18:13:00
  发帖心情 Post By:2018/7/24 15:02:00 [只看该作者]

甜老师,我想达到如图效果
图片点击可在新窗口打开查看此主题相关图片如下:目录树.jpg
图片点击可在新窗口打开查看

只需列出未开piao的信息

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


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

Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("产品"))
b.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b.Totals.AddDef("日期",AggregateEnum.Count,"个数") '根据客户列来统计记录数,也就是订单数
b.filter = "是否开piao = false"
dt = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "年|月")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(个数)","年 = " & Year) & "条)"
        Case 1
            nd.Text = nd.text & "月(" & dt.Compute("Sum(个数)","年 = " & Year & " And 月 = " & Month) & "条)"
    End Select
Next
trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("sum(个数)") & "条)",0)
trv.ResumeRedraw

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


加好友 发短信
等级:小狐 帖子:349 积分:3329 威望:0 精华:0 注册:2016/3/8 18:13:00
  发帖心情 Post By:2018/7/25 14:38:00 [只看该作者]

老师,我在treeview中加入如下代码:
Dim Filter As String = ""
If e.node.Name <> "显示所有行" Then '要用Name属性,不能用Text属性
    Dim d1 As Date
    Dim d2 As Date
    Dim Year As Integer = e.Node.DataRow("年")
    Dim Month As Integer = e.Node.DataRow("月")
    Dim Product As String = e.Node.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 产品 = '" & Product & "'"
    End Select
End If
Tables("产品").filter = "是否开piao = false"

只有在“所有行中”点击鼠标正常显示未开piao信息,在下面的展开项中没有反应,请问代码在哪里有问题?

另外的问题是:
1、我在TreeView中查找到未开piao项后,在字段“是否开piao”中勾选后,测试运行后会和以前报同一个错。我的想法是查到未开piao信息后可以直接在查询结果中,在“是否开piao”中勾选开piao
2、整个项目我只能运行一次,在项目中第二次打开treeview,测试运行后会和以前报同一个错
 

请老师指点这三个问题该如何处理,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table

[此贴子已经被作者于2018/7/25 14:44:04编辑过]

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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3 (3).table


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


加好友 发短信
等级:小狐 帖子:349 积分:3329 威望:0 精华:0 注册:2016/3/8 18:13:00
  发帖心情 Post By:2018/7/26 13:49:00 [只看该作者]

感谢甜老师的耐心指导!!请问下面两个代码该怎么理解

 

1、Tables("产品").filter = "是否开piao = false and " & filter

 

2、Dim Filter As String = "1=1"   

 


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


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

1、Tables("产品").filter = "是否开piao = false and " & filter

 

参考 http://www.foxtable.com/webhelp/scr/0221.htm

 

2、Dim Filter As String = "1=1"   

 

给filter赋值一个初始值,最后生成下面的条件,如果filter没有值的话,就会多一个and字符串

 

是否开piao = false and 1=1

 

或者

 

是否开piao = false and 某列='某值'


 回到顶部
总数 18 上一页 1 2