以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]获取父键下的子键集合  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139774)

--  作者:new4w
--  发布时间:2019/8/21 11:37:00
--  [求助]获取父键下的子键集合
最近有个需要,就是根据数据库的表格,来得到某个部门及其下的所有子部门id集合
数据库表是这样的:

图片点击可在新窗口打开查看此主题相关图片如下:tim图片20190821113252.png
图片点击可在新窗口打开查看

为此,做了个递归函数
\'此函数为递归函数,用于根据数据表名,字段,获取某个字段值所有下级内容;
Dim dt As DataTable = args(0)
Dim mbzd As String = args(1) \'\'获取的字段名
Dim tjzd As String = args(2) \'\'条件字段
Dim tjz As String = args(3) \'\'获取的条件值
Dim all As String = args(4) \'\'返回值


For Each tj As String In tjz.split("|")
Dim rang1 As String = dt.SQLGetComboListString(mbzd,tjzd & " = \'" & tj & "\'")
If rang1 <> "" Then
If all = "" Then
all = rang1
Else
all = all & "|" & rang1
End If
all=Functions.Execute("System_Getnextstr",dt,mbzd,tjzd,rang1,all)
End If
Next
Return all


使用方法:Dim strbm As String = Functions.Execute("System_Getnextstr",表明,"id","parentid","2|4" ,"")

 初步弄递归函数,大家给我指正下,看有没有需要修改的地方,现在是好用,但是有些地方我觉得似乎不太好,看到的大家回复我下
 
比如最后一个参数,all 我不想用,但是不用似乎返回不了以前的值

只用一个all也不行,必须把这个当作一个传进来的参数,这些我不太理解,我是蒙门做的这个参数

对于递归函数,运行的路线是什么样的?

图片点击可在新窗口打开查看此主题相关图片如下:运行路线.jpg
图片点击可在新窗口打开查看

是路线1,还是路线2?
[此贴子已经被作者于2019/8/27 8:37:10编辑过]