以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]目录树代码帮修正下  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152093)

--  作者:绿火柴
--  发布时间:2020/7/8 20:48:00
--  [求助]目录树代码帮修正下
操作如下,感觉代码不太合理,
实际效果也确实是的,出来的结果都会有两条一样的。
帮看下问题出在那里.

1.首先在窗口中加入目录树与控件窗口(未提前绑定表)
2.在窗口的 AfterLoad 下加入如下代码:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = con_name
cmd.CommandText = "SE LECT DISTINCT 年,月,部门号 From 缴库成本"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"年|月")
trv.Nodes.Insert("加载所有数据",0)
3.在目录树的 NodeMouseClick 加入下面代码:
Dim tab As Table = Tables("统计分析_table1")
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.ConnectionName = con_name
cmd.CommandText = "sel ect * from 缴库成本"
dt = cmd.ExecuteReader
Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[年] = \'" & dr("年") & "\'"
        Case 1
            Filter ="[年] = \'" & dr("年") & "\' And [月] = \'" & dr("月") & "\'"
    End Select
End If
tab.DataSource = dt
dt.LoadFilter = Filter
dt.Load

--  作者:绿火柴
--  发布时间:2020/7/9 8:04:00
--  
重复,是被查询的数据本身重复了。

3.这里的代码,帮看下,这样写是不是可以的。

--  作者:有点蓝
--  发布时间:2020/7/9 9:47:00
--  
2.在窗口的 AfterLoad 下加入如下代码:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = con_name
cmd.CommandText = "SE LECT DISTINCT 年,月 From 缴库成本"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"年|月")
trv.Nodes.Insert("加载所有数据",0)
cmd.CommandText = "sel ect * from 缴库成本 where 1=2"
dt = cmd.ExecuteReader
Tables("统计分析_table1") = dt

3.在目录树的 NodeMouseClick 加入下面代码:
Dim tab As dataTable = dataTables("统计分析_table1")
Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[年] = \'" & dr("年") & "\'"
        Case 1
            Filter ="[年] = \'" & dr("年") & "\' And [月] = \'" & dr("月") & "\'"
    End Select
End If
tab.LoadFilter = Filter
tab.Load

--  作者:绿火柴
--  发布时间:2020/7/9 9:55:00
--  
收到,我修改下。
再接着问下,合计占比显示问题。右下角这个怎么样才能搞出来。


月份 车间 材料 人工 制费 合计 材料% 人工% 制费%
6月 A   27,506    9,970   85,472     122,948 22% 8% 70%
6月 B   37,844   42,264   89,898     170,006 22% 25% 53%
6月 C   99,814    5,340   31,931     137,086 73% 4% 23%
6月 D   44,358   40,436   87,879     172,673 26% 23% 51%
6月 E   61,408   34,313      266      95,987 64% 36% 0%
6月 F   90,278   43,585   41,760     175,622 51% 25% 24%
合计    361,209  175,908  337,204     874,321 41% 20% 39%

--  作者:有点蓝
--  发布时间:2020/7/9 10:00:00
--  
方法1,改为汇总:http://www.foxtable.com/webhelp/topics/2636.htm
--  作者:客人
--  发布时间:2020/7/9 10:34:00
--  
多谢蓝版,看来帮助还要再多看些。固定最后行,稍有点复杂,等后面空些了,再研究下。

再问:汇总模式下,怎么折叠,如果不复杂,望提示下。

--  作者:客人
--  发布时间:2020/7/9 10:38:00
--  
谢蓝版,

折叠显示,已经设置好了。

(我这个论坛账户,总是无权限登录,,还偶尔跑成客人登录了)