以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [分享]不用递归函数也能生成目录树,且更简单高效 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144148) |
-- 作者:shenyl0211 -- 发布时间:2019/12/12 10:02:00 -- [分享]不用递归函数也能生成目录树,且更简单高效 不用递归函数也能生成目录树,且更简单高效。 下面以【行政区划】表为例(只有【区划代码】、【区划名称】、【区划年份】3列),生成省直辖市自治区和地州市盟二级目录树,全部代码如下: Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim nd As WinForm.TreeNode Dim dt As DataTable = DataTables("行政区划") Dim dr1,dr2 As DataRow Dim dm As String trv.StopRedraw() trv.Nodes.Clear For Each dr1 In dt.Select("区划代码 like \'%0000\' and 区划年份 = " & DMNF,"区划名称") \'全局变量DMNF为采用的区划年份,可以事先获取 dm = left(dr1("区划代码"),2) & "%" nd = trv.Nodes.Add(dr1("区划名称")) For Each dr2 In dt.Select("区划代码 like \'" & dm & "\' and 区划代码 like \'%00\' And 区划代码 not Like \'%0000\' And 区划年份 = " & DMNF,"区划名称") nd.Nodes.Add(dr2("区划名称")) Next Next trv.ResumeRedraw() |
-- 作者:有点蓝 -- 发布时间:2019/12/12 10:16:00 -- 多谢分享。 这种知道明显是多少层的目录树就可以,也就是多套几个循环的问题。而递归就是为了适应不知道到底有多少层的情况的
|
-- 作者:shenyl0211 -- 发布时间:2019/12/12 17:26:00 -- 一样通用的。比如北京、上海、天津、重庆、香港、澳门、台湾等7个是一层。却无需特殊代码。 有一点必须承认,就是设计的时候,肯定是限定了层数的。无论是会计科目,还是预算科目,或是例子的行政区划(本例是6位代码,如果必要可以精确到县,即最多3级),都一样是有限的。规则是管理系统的必备要素,离开规则就谈不上管理系统。比如限定数据类型,或限定字数,都是规则。当要求输入“是”或“否”的时候,就不能输入“对的”或“不是”。 一般不会超过4层,超过了就说明组织管理能力有问题。就跟限制字数一样,超过限定就要重新组织文字,而不是首先要求修改软件。
[此贴子已经被作者于2019/12/12 17:33:53编辑过]
|