以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这个目录树有错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89576)

--  作者:天蝉一线
--  发布时间:2016/8/24 20:22:00
--  这个目录树有错误
trv.BuildTree(dt,"预算资金性质|一级科目|二级科目|三级科目|四级科目|五级科目|六级科目|七级科目",)
我用msgbox测试了一下,当目录树显示到“七级科目”的时候出错了,错误内容是:指定的参数已超出有效值的范围。
参数名: index,七级科目的的行,有些有数据,有些没数据,该怎么设置,或者加什么代码

--  作者:大红袍
--  发布时间:2016/8/24 21:10:00
--  
 你的目录树事件,写了什么代码?
--  作者:天蝉一线
--  发布时间:2016/8/24 22:20:00
--  
Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("预算明细查询表"))
b.Groups.AddDef("记录编号")
b.Groups.AddDef("下达年度")
b.Groups.AddDef("资金来源")
b.Groups.AddDef("预算下达部门")
b.Groups.AddDef("预算实施部门")
b.Groups.AddDef("预算资金性质")
b.Groups.AddDef("一级科目")
b.Groups.AddDef("二级科目")
b.Groups.AddDef("三级科目")
b.Groups.AddDef("四级科目")
b.Groups.AddDef("五级科目")
b.Groups.AddDef("六级科目")
b.Groups.AddDef("七级科目")
b.Totals.AddDef("预算下达金额",AggregateEnum.sum,"预算下达金额")
dt = b.Build(False)
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
trv.BuildTree(dt,"预算资金性质|一级科目|二级科目|三级科目|四级科目|五级科目|六级科目|七级科目")
trv.StopRedraw
For Each n As WinForm.TreeNode In trv.Nodes
    Functions.Execute("DelEmptyNode",n)
Next
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim yszjxz As String = nd.DataRow("预算资金性质")
    Dim km1 As String = nd.DataRow("一级科目") 
    Dim km2 As String = nd.DataRow("二级科目") 
    Dim km3 As String = nd.DataRow("三级科目") 
    Dim km4 As String = nd.DataRow("四级科目") 
    Dim km5 As String = nd.DataRow("五级科目") 
    Dim km6 As String = nd.DataRow("六级科目") 
    Dim km7 As String = nd.DataRow("七级科目") 
    Select Case nd.Level
        Case 0
msgbox("0") 
       nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质 = \'" & yszjxz & "\'") & "万元"
        Case 1
       msgbox("1")  
        nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'") & "万元"
        Case 2
     msgbox("2") 
            nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\'") & "万元"
        Case 3
msgbox("3") 
            nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\' and 三级科目 = \'" & km3 & "\'") & "万元"
        Case 4
msgbox("4") 
            nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\'and 三级科目= \'" & km3 & "\'and 四级科目= \'" & km4 & "\'") & "万元"
        Case 5
msgbox("5") 
            nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\'and 三级科目= \'" & km3 & "\'and 四级科目= \'" & km4 & "\'and 五级科目= \'" & km5 & "\'") & "万元"
        Case 6
msgbox("6") 
            nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\'and 三级科目= \'" & km3 & "\'and 四级科目= \'" & km4 & "\'and 五级科目= \'" & km5 & "\'and 六级科目= \'" & km6 & "\'") & "万元"
        Case 7
msgbox("7") 
       If km7 IsNot Nothing Then   
        nd.Text = nd.text & "------------" & dt.Compute("Sum(预算下达金额)","预算资金性质=\'" & yszjxz  & "\'and 一级科目=\'" & km1 & "\'and 二级科目 =\'" & km2 & "\'and 三级科目= \'" & km3 & "\'and 四级科目= \'" & km4 & "\'and 五级科目= \'" & km5 & "\'and 六级科目= \'" & km6 & "\'and 七级科目= \'" & km7 & "\'") & "万元"
    Else
Return
End If
       End Select
Next
trv.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(预算下达金额)") & "万元)",0)
trv.ResumeRedraw

[此贴子已经被作者于2016/8/24 22:20:55编辑过]

--  作者:大红袍
--  发布时间:2016/8/24 22:48:00
--  

这句代码去掉试试

 

trv.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(预算下达金额)") & "万元)",0)

 

看看你生成的 统计表1 是否有数据。