Foxtable(狐表)用户栏目专家坐堂 → 筛选树目录列示到年月日


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

主题:筛选树目录列示到年月日

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


加好友 发短信
等级:二尾狐 帖子:541 积分:4291 威望:0 精华:0 注册:2019/1/13 10:12:00
筛选树目录列示到年月日  发帖心情 Post By:2020/2/21 7:51:00 [显示全部帖子]

老师,我设计的筛选树目录显示年和月,还想进一步显示到日,请指教。
''---------------------------------设置生产计划表筛选树(按提交人-日期显示)--------------------------------------------
'首先生成统计表
Dim dt2 As DataTable
Dim b2 As New sqlGroupTableBuilder("统计表生产计划表","生产计划表")
b2.C
b2.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b2.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b2.Groups.AddDef("提交人")
b2.Groups.AddDef("序号")
b2.Totals.AddDef("序号",AggregateEnum.Count,"次数") '根据客户列来统计记录数,也就是订单数
dt2 = b2.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView3")
trv2.BuildTree(dt2, "提交人|年|月")
trv2.StopRedraw
For Each nd As WinForm.TreeNode In trv2.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Dim Product4 As String = nd.DataRow("提交人")
    Dim Product5 As String = nd.DataRow("序号")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & dt2.Compute("Sum(次数)","提交人 = '" & Product4 & "'") & ")"
        Case 1
            nd.Text = nd.text & "年(" & dt2.Compute("Sum(次数)","年 = " & Year) & ")"
        Case 2
            nd.Text = nd.text & "月(" & dt2.Compute("Sum(次数)","年 = " & Year & " And 月 = " & Month) & ")"
    End Select
Next
trv2.Nodes.Insert("显示所有行","显示所有行(" & dt2.Compute("Sum(次数)") & ")",0)
trv2.ResumeRedraw
[此贴子已经被作者于2020/2/21 8:50:32编辑过]

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


加好友 发短信
等级:二尾狐 帖子:541 积分:4291 威望:0 精华:0 注册:2019/1/13 10:12:00
请老师再看看  发帖心情 Post By:2020/2/21 15:11:00 [显示全部帖子]

老师,我运行以下代码出现两个问题:1,目录不显示“日”这个字;2、目录显示的数量,一级目录提交人正确,二级目录购买单位正确,三级目录日期年以及往下的不正确,不分目录全部列示,请您指点。应该是case 2往下的代码不对,我试了好多次也改不对。
'首先生成统计表
Dim dt2 As DataTable
Dim b2 As New sqlGroupTableBuilder("统计表生产计划表","生产计划表")
b2.C
b2.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b2.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b2.Groups.AddDef("日期",DateGroupEnum.day,"日")
b2.Groups.AddDef("提交人")
b2.Groups.AddDef("序号")
b2.Groups.AddDef("购买单位")
b2.Totals.AddDef("序号",AggregateEnum.Count,"次数") '根据客户列来统计记录数,也就是订单数
dt2 = b2.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView3")
trv2.BuildTree(dt2, "提交人|购买单位|年|月|日")
trv2.StopRedraw
For Each nd As WinForm.TreeNode In trv2.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Dim day As Integer = nd.DataRow("日")
    Dim Product4 As String = nd.DataRow("提交人")
    Dim Product5 As String = nd.DataRow("序号")
    Dim Product6 As String = nd.DataRow("购买单位")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & dt2.Compute("Sum(次数)","提交人 = '" & Product4 & "'") & ")"
        Case 1
            nd.Text = nd.text & "(" & dt2.Compute("Sum(次数)","购买单位 = '" & Product6 & "'") & ")"
        Case 2
            'nd.Text = nd.text & "(" & dt2.Compute("Sum(次数)","提交人 = '" & Product4 & " And 购买单位 = '" & Product6 & "' And 年 = " & Year) & ")"
            ' nd.Text = nd.text & "年(" & dt2.Compute("Sum(次数)","年 = " & Year) & ")"
        Case 3
            nd.Text = nd.text & "月(" & dt2.Compute("Sum(次数)","年 = " & Year & " And 月 = " & Month) & ")"
        Case 3
            nd.Text = nd.text & "日(" & dt2.Compute("Sum(次数)","年 = " & Year & " And 月 = " & Month) & " and 日= " & day & ")"
    End Select
Next
trv2.Nodes.Insert("显示所有行","显示所有行(" & dt2.Compute("Sum(次数)") & ")",0)
trv2.ResumeRedraw

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


加好友 发短信
等级:二尾狐 帖子:541 积分:4291 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2020/2/22 9:28:00 [显示全部帖子]

老师,提示:语法错误,“购买单位”运算符后缺少操作数。应该是case2有问题,我注释这个代码就不提示错误了。

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


加好友 发短信
等级:二尾狐 帖子:541 积分:4291 威望:0 精华:0 注册:2019/1/13 10:12:00
目录树代码  发帖心情 Post By:2020/2/22 11:40:00 [显示全部帖子]

老师,下面是目录树代码,至case2正常,case3运行后提示:日期后的引号不完整,您看看。
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 day As Integer = e.node.DataRow("日")
    Dim Product As String = e.Node.DataRow("购买单位")
    Dim Product1 As String = e.Node.DataRow("提交人")
    'Dim Product2 As String = e.Node.DataRow("考勤员")
    Select Case e.Node.Level
        Case 0
            Filter = "[提交人] = '" & e.Node.DataRow("提交人") & "'"
        Case 1
            Filter = "[提交人] = '" & e.Node.DataRow("提交人") & "'And 购买单位 = '" & Product & "'"
        Case 2
            Filter = "[提交人] = '" & e.Node.DataRow("提交人") & "'And 购买单位 = '" & Product & "'and Year(日期) = " & Year 
            
        Case 3
            Filter = "[提交人] = '" & e.Node.DataRow("提交人") & "'And 购买单位 = '" & Product & "'and Year(日期) = " & Year & "'And Month(日期) = " & Month 
            
            'Filter ="Year(日期) = " & Year & " And Month(日期) = " & Month
    End Select
End If
DataTables("生产计划表").LoadFilter = Filter
DataTables("生产计划表").Load()

 回到顶部