Foxtable(狐表)用户栏目专家坐堂 → 找下级部门


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

主题:找下级部门

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
找下级部门  发帖心情 Post By:2013/9/22 11:50:00 [显示全部帖子]

通过目录树可以实现找出直接下级及所有下级,通过命令如何实现,请各位大大帮忙
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目76.table



[此贴子已经被作者于2013-9-22 11:54:35编辑过]

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 12:20:00 [显示全部帖子]

原来是参考这里的,用目录树可以完成
现在想用命令来完成,有些地方不能用目录树(下载数据、权限设置等),希望能帮忙一下

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 12:25:00 [显示全部帖子]

还参考了这段,原理是差不多的,我改来改去都不对

Dim drs As New List(of DataRow)
Dim keys As New List(of String)
For Each dr As DataRow In DataTables("表A").DataRows
    keys.Clear
    Dim dr1 As DataRow = dr
    keys.Add(dr("键"))
    Do
        Dim pkey As String = dr1("父键")
        If keys.Contains(pkey)
            drs.Add(dr)
            Exit Do
        Else
            keys.Add(pkey)
            dr1 = DataTables("表A").Find("键 = '" &  pkey  & "'")
            If dr1 Is Nothing Then
                Exit Do
            End If
        End If
    Loop
Next

'列出死循环的行的标题
For Each dr As DataRow In drs
    output.show(dr("标题"))
Next


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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 12:42:00 [显示全部帖子]

4楼的方法碰到部门更改就不可以了,因为本级部门的编码不会变,上级部门变了,那么上级部门和下级部门的规则不一定一样,
比如品质部现在归生产管,后来归总经理管了,跨大部门了,就破坏了编码规则,像身份证一样,户口变了,号码没变,通过号码的规则行不通
我想还是要用到递归,就是脑子还没转过来
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=29845和这个贴子类似,看了内部函数,领悟不了

[此贴子已经被作者于2013-9-22 12:44:26编辑过]

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 12:47:00 [显示全部帖子]

因为部门不是只有例子的数据,还有无限下级产生的
我只是用部门做个例子,像人事管理,直接上级签署一些申请报告,查看直接下级或所有下级的工作报告等都会用到,层级限不了

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 13:27:00 [显示全部帖子]

谢谢lsy
你的方法和狐爸4楼说的差不多,碰到上级部门变更还是解决不了

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 13:50:00 [显示全部帖子]

Dim r As Row = Tables("部门").Current
Dim key As String = r("名称")
Dim ids As String
For Each dr As DataRow In DataTables("部门").DataRows
    Dim pd As String = dr("名称")    ' 这句有问题吗?
    Dim dr1 As DataRow=dr
    Do
        If pd = key Then
            If ids > "" Then
                ids= ids &  ","
            End If
            ids = ids & "'" & DR("部门") & "'"
            Exit Do
        Else
            pd = dr1("上级编码")        '这句有问题吗?
            If pd Is Nothing Then
                Exit Do
            End If
        End If
    Loop
Next
MessageBox.Show(ids)
一运行就卡死了,不知哪句不对

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 14:11:00 [显示全部帖子]

比如说人员的上司是会变更的(原来上司升职了,离职了),新来的上司是其他部门调过来的(原则上员工编号不变,只是岗位变了),那新上司的编号和现在的下属的编号不一定成规则了,所以通过编号规则来处理会碰到这个问题,
组织结构的部门变更也是这样,可能会划到其他大部门下面去,所以部门编码就没规则了
而通过“上级部门”、“上司”这个列来处理会比较好一点
真不行就借用目录树来中转完成,通过目录树能做到的,通过命令我想也可以的吧


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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2013/9/22 20:39:00 [显示全部帖子]

感谢狐爸,解决了
继续努力学习

 回到顶部