以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请老师看一下下面的递归函数有什么问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96906)

--  作者:xaay
--  发布时间:2017/3/2 10:09:00
--  请老师看一下下面的递归函数有什么问题?

 \'调用函数:目的是为了取得上级部门和本部门名称组成的路径
MessageBox.Show(Functions.Execute("部门路径","109",""))

\'函数------------------------------------------------------
Dim bmbh As String = Args(0)
Dim str As String =  Args(1)
Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText="sel ect 部门编号,部门名称,上级部门编号,上级部门名称 from {公司部门表} where 部门编号 = \'" & bmbh & "\'"
Dim dt As DataTable = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim dr As DataRow = dt.DataRows(0)
    str = dr("部门名称") & "\\" & str
    str = str.trim("\\")
    If dr("上级部门编号").length > 0 Then
        Functions.Execute("部门路径",dr("上级部门编号"),str)
    End If
End If
Return str
\'----------------------------------------------------------


--  作者:有点色
--  发布时间:2017/3/2 10:20:00
--  

 你可以定义一个vars("str")变量,接收 vars("str") = str

 

 否则,你获取不到最后的结果的

 

 


--  作者:有点色
--  发布时间:2017/3/2 10:25:00
--  

或者改成

 

MessageBox.Show(Functions.Execute("部门路径","109",""))

\'函数------------------------------------------------------
Dim bmbh As String = Args(0)
Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText="sel ect 部门编号,部门名称,上级部门编号,上级部门名称 from {公司部门表} where 部门编号 = \'" & bmbh & "\'"
Dim dt As DataTable = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim dr As DataRow = dt.DataRows(0)
    If dr("上级部门编号").length > 0 Then
        str = dr("部门名称") & "\\" & Functions.Execute("部门路径",dr("上级部门编号"))
        str = str.trim("\\")
    End If
End If
Return str
\'----------------------------------------------------------


--  作者:xaay
--  发布时间:2017/3/2 10:31:00
--  
已解决,函数如下
Dim bmbh As String = Args(0)
Dim str As String =  Args(1)
Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText="sel ect 部门编号,部门名称,上级部门编号,上级部门名称 from {公司部门表} where 部门编号 = \'" & bmbh & "\'"
Dim dt As DataTable = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim dr As DataRow = dt.DataRows(0)
    If dr("上级部门编号").length > 0 Then
        str = Functions.Execute("部门路径",dr("上级部门编号"),str) & "\\" & dr("部门名称")
    Else
        str = dr("部门名称") & "\\" & str
    End If
    str  = str.trim("\\")
End If
Return str

 

 

[此贴子已经被作者于2017/3/2 10:49:54编辑过]

--  作者:有点色
--  发布时间:2017/3/2 10:49:00
--  

顶级你在掉用函数的时候获取啊。

 

MessageBox.Show(Functions.Execute("部门路径","109",""))

\'函数------------------------------------------------------
Dim bmbh As String = Args(0)
Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText="sel ect 部门编号,部门名称,上级部门编号,上级部门名称 from {公司部门表} where 部门编号 = \'" & bmbh & "\'"
Dim dt As DataTable = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim dr As DataRow = dt.DataRows(0)
    If dr("上级部门编号").length > 0 Then
        str = Functions.Execute("部门路径",dr("上级部门编号")) "\\" & dr("部门名称") 
        str = str.trim("\\")
    End If
End If
Return str


--  作者:xaay
--  发布时间:2017/3/2 10:50:00
--  
以下是引用有点色在2017/3/2 10:49:00的发言:

顶级你在掉用函数的时候获取啊。

 

MessageBox.Show(Functions.Execute("部门路径","109",""))

\'函数------------------------------------------------------
Dim bmbh As String = Args(0)
Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText="sel ect 部门编号,部门名称,上级部门编号,上级部门名称 from {公司部门表} where 部门编号 = \'" & bmbh & "\'"
Dim dt As DataTable = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim dr As DataRow = dt.DataRows(0)
    If dr("上级部门编号").length > 0 Then
        str = Functions.Execute("部门路径",dr("上级部门编号")) "\\" & dr("部门名称") 
        str = str.trim("\\")
    End If
End If
Return str

 

 

感谢老师,问题已解决!