Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树代码帮修正下


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

主题:[求助]目录树代码帮修正下

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


加好友 发短信
等级:一尾狐 帖子:482 积分:4510 威望:0 精华:0 注册:2014/3/4 21:20:00
[求助]目录树代码帮修正下  发帖心情 Post By: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

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


加好友 发短信
等级:一尾狐 帖子:482 积分:4510 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/7/9 8:04:00 [只看该作者]

重复,是被查询的数据本身重复了。

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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


加好友 发短信
等级:一尾狐 帖子:482 积分:4510 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By: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%

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


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


 回到顶部
客人(218.75.*.*)
  6楼


  发帖心情 Post By:2020/7/9 10:34:00 [只看该作者]

多谢蓝版,看来帮助还要再多看些。固定最后行,稍有点复杂,等后面空些了,再研究下。

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

 回到顶部
客人(218.75.*.*)
  7楼


  发帖心情 Post By:2020/7/9 10:38:00 [只看该作者]

谢蓝版,

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

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

 回到顶部