以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]以下代码是“按日期年、月、客户”顺序的筛选树,求改成顺序为“客户、工序、品名规格、月、年”的筛选树的代码? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96396) |
-- 作者:fengwenliuyan -- 发布时间:2017/2/20 9:12:00 -- [求助]以下代码是“按日期年、月、客户”顺序的筛选树,求改成顺序为“客户、工序、品名规格、月、年”的筛选树的代码? 以下代码是“按日期年、月、客户”顺序的筛选树,求改成顺序为“客户、工序、品名规格、月、年”的筛选树的代码? 对账单窗口_AfterLoad
\'首先生成统计表 Dim dt As DataTable Dim b As New GroupTableBuilder("统计表2",DataTables("统正电泳出入库登记表")) b.Groups.AddDef("出库日期",DateGroupEnum.Year,"年") b.Groups.AddDef("出库日期",DateGroupEnum.Month,"月") 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 Year As Integer = nd.DataRow("年") Dim Month As Integer = nd.DataRow("月") Dim Product As String = 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) & "条)" Case 2 nd.Text = nd.text & "(" & nd.DataRow("个数") & "条)" End Select Next trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(个数)") & "条)",0) trv.ResumeRedraw
对账单窗口_TreeView1_NodeMouseDoubleClick
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 e.Form.controls("统正对账单").Table.Filter = Filter |
-- 作者:有点色 -- 发布时间:2017/2/20 10:03:00 -- 你能不能看懂代码变通一下?举一反三啊,不然所有的筛选树都要帮你写?
1、生成统计表的时候,加上你需要的列分组
2、生成目录树的时候,设置好各列的顺序
3、编写统计和筛选代码的时候,对应合成条件。 |
-- 作者:fengwenliuyan -- 发布时间:2017/2/20 15:19:00 -- [求助][讨论]不知道哪里代码写错了,改不过来了? 求帮助! \'首先生成统计表 Dim dt As DataTable Dim b As New GroupTableBuilder("统计表2",DataTables("统正电泳出入库登记表")) b.Groups.AddDef("客户") b.Groups.AddDef("工序") 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 Product As String = nd.DataRow("客户") Dim gx As String = nd.DataRow("工序") Dim pmgg As String = nd.DataRow("品名规格") Select Case nd.Level Case 0 nd.Text = nd.text & "客户(" & dt.Compute("Sum(个数)","客户 = " & Product) & "条)" Case 1 nd.Text = nd.text & "工序(" & dt.Compute("Sum(个数)","客户 = " & Product & " And 工序 = " & gx) & "条)" Case 2 nd.Text = nd.text & "品名规格(" & dt.Compute("Sum(个数)","客户 = " & Product & " And 工序 = " & gx & " And 品名规格 = " & pmgg) & "条)" Case 3 nd.Text = nd.text & "(" & nd.DataRow("个数") & "条)" End Select Next trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(个数)") & "条)",0) trv.ResumeRedraw 提示错误: 不知道哪里代码写错了,改不过来了? 求帮助! |
-- 作者:有点色 -- 发布时间:2017/2/20 15:57:00 -- 加上单引号即可
\'首先生成统计表 |
-- 作者:fengwenliuyan -- 发布时间:2017/2/20 15:59:00 -- 谢谢老师! 谢谢老师! |