以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 关递归函数变量传递的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124557)

--  作者:2900819580
--  发布时间:2018/9/9 10:36:00
--  [求助] 关递归函数变量传递的问题
Dim cmd As new SQLCommand
Dim Sqldt As DataTable
cmd.C
cmd.CommandText = "Sel ect * From {部门} Where [上级部门] = \'" & args(0) & "\'"

Dim lm As String = args(1)
Sqldt = cmd.ExecuteReader

If Sqldt.DataRows.Count > 0  Then
    For Each dr As DataRow In sqldt.DataRows

        If lm > "" Then LM &= "|"
        lm &= dr("部门名称")
        Dim val As Integer
        cmd.CommandText = "Sele ct Count(*) From {部门} Where [上级部门] = \'" & dr("部门名称") & "\'"
        val  = cmd.ExecuteScalar()
        If val > 0 Then Functions.Execute("部门查找递归",dr("部门名称"),lm)
    Next
End If
Return lm


MessageBox.Show(Functions.Execute("部门查找递归","总裁办","总裁办"))
代码如上,红色字运行后得到的LM变量,没办法传递回原来的LM变量

如总裁办下属有生产部|销售部|财务部,生产部下属有工程部, 最终得到的结果只有生产部|销售部|财务部,而不是生产部|销售部|财务部|工程部

--  作者:有点甜
--  发布时间:2018/9/9 10:50:00
--  

用一个全局变量 lm 记录你的值,不要用return的值

 

http://www.foxtable.com/webhelp/scr/1450.htm