Foxtable(狐表)用户栏目专家坐堂 → 请老师看一下下面的递归函数有什么问题?


  共有2272人关注过本帖树形打印复制链接

主题:请老师看一下下面的递归函数有什么问题?

帅哥哟,离线,有人找我吗?
xaay
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:32 积分:405 威望:0 精华:0 注册:2016/7/23 10:33:00
请老师看一下下面的递归函数有什么问题?  发帖心情 Post By: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
'----------------------------------------------------------


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/2 10:20:00 [只看该作者]

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

 

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:32 积分:405 威望:0 精华:0 注册:2016/7/23 10:33:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:32 积分:405 威望:0 精华:0 注册:2016/7/23 10:33:00
  发帖心情 Post By: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

 

 

感谢老师,问题已解决!


 回到顶部