Foxtable(狐表)用户栏目专家坐堂 → 内部函数如何添加筛选条件


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

主题:内部函数如何添加筛选条件

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
内部函数如何添加筛选条件  发帖心情 Post By:2020/11/25 19:04:00 [显示全部帖子]

老师下面是我创建了内部函数,现在我想加筛选条件dim filter as string = Functions.Execute("iload","部门信息","department"),这个filter加到哪个位置?代码如何写?filter是获取的满足条件的departID, filter = "departid in ('" & str.Replace(",","','") &  "')"  我想达到生成的目录树是在他可查看部门的权限范围内
Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
Dim drs As List(of DataRow) = dt.Select("[parentID] = '" & nd.name & "' and filter ","order")
For Each dr As DataRow In drs
    Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("departID"),dr("departname"))
    Functions.Execute("AddChildren",cd,dt)
Next
[此贴子已经被作者于2020/11/25 19:07:58编辑过]

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 8:24:00 [显示全部帖子]

老师还有个问题,就是这个是递归函数的案例。必须要求有数据的父键[parentID] 为空的存在,否则就无法调用生成目录树?我想根据filter仅能查看销售部以下的部门目录树,怎么修改代码?

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 9:06:00 [显示全部帖子]

老师就是咱们CaseStudy目录下的文件: 递归函数.Table这个,我定义了一个筛选变量filter,如果fiter = "键 In (" & ids & ")"   ;我想修改代码仅按filter生成部分目录树。

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 9:12:00 [显示全部帖子]

老师现在如果fiter = "键 In (" & ids & ")"   ;  ids中不存在父键为空的行数据,就根本不生产目录树。这样就导致我想仅生成h-i-g这个目录树就无法生成;
老师我想在AddChildren函数上直接加上filter条件,这样调用起来更方便?是否可以
[此贴子已经被作者于2020/11/26 9:15:54编辑过]

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 9:45:00 [显示全部帖子]

老师生成目录树的代码如何修改?现在如果不存在父键为空的行,就没法生成目录树
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("表A")
tr.StopRedraw()
tr.Nodes.Clear
'tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("父键") Then
        nd = tr.Nodes.Add(dr("键"),dr("标题"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 10:33:00 [显示全部帖子]

老师我想生成销售部及销售部下级部门的目录树,就没法生成了?那我可不可以指定一个键ID作为目录树的顶级,让我的需求实现?代码该如何修改

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 22:51:00 [显示全部帖子]

谢谢老师
虽然目录树生成一部分可以了,但是加载全部部门才能生成目录树。取消筛选后,所有部门信息行都出来了,这样部门信息的维护不能受权限控制了。
如果在beforeload设置加载条件又无法生成目录树。
老师我想让他们仅能看到数据权限范围内的部门行数据
请问老师改如何处理啊?

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/27 8:34:00 [显示全部帖子]

老师我定义了一个函数按用户名进行生成合适筛选条件的数据,我在哪里设置下,登录软件后直接加载的就是“部门信息”表filter的数据?因为用到这个表的窗口多,所以想弄到一个统一的地方;
Filter = Functions.Execute("fload","部门信息")

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/27 9:26:00 [显示全部帖子]

老师我是自定义设置的用户管理、包括用户角色和登陆窗口也是自定义的。没有用狐表自带的。现在把filter代码写到LoadUserSetting中,自定义函数,fload对象未引用实例;
代码如下:datatables(“abc”)=  Functions.Execute("fload","部门信息");
因为是在登陆窗口打开前弹出的报错的,因为我的函数中要调用自定义登陆窗户填写的账号信息,加载数据时登陆窗口还未打开所以提示未引用实例
这样我该如何处理?
为啥是在我打开登陆窗口前加载数据?能否设置在自定义登陆窗口打开后加载

 回到顶部