以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]根据用户分组名称,动态加载用户数据 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144226) |
-- 作者:myjht -- 发布时间:2019/12/14 9:14:00 -- [求助]根据用户分组名称,动态加载用户数据 求助,根据登陆用户分组名称,加载分组数据,和窗口筛选数不能共用,求正确方式,谢谢。
1、付款台账,绑定表付款台账,窗口AfterLoad事件 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SEL=====ECT
DISTINCT Year(付款日期) As 年, Month(付款日期)
As 月, Day(付款日期) As 日 From {付款台账}" dt = cmd.ExecuteReader() Dim trv As WinForm.TreeView =
e.Form.Controls("TreeView1") trv.BuildTree(dt,"年|月|日") trv.Nodes.Insert("付款日期加载",0)
2、窗口筛选树TreeView的双击NodeMouseDoubleClick事件 Dim Filter As String If e.Node.Text = "加载所有数据" Then Filter = "" Else Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行 Dim Year As Integer = dr("年") Dim Month As Integer = dr("月") Dim Day As Integer = dr("日") Sel=====ect Case e.Node.Level Case 0 Filter ="Year(付款日期) = " & Year Case 1 Filter ="Year(付款日期) = " & Year & " And
Month(付款日期) = " &
Month Case 2 Filter ="Year(付款日期) = " & Year & " And
Month(付款日期) = " &
Month & " And Day(付款日期) = " & Day End Sel=====ect End If
DataTables("付款台账").LoadFilter = Filter DataTables("付款台账").Load() Tables("付款台账").Sort = "付款日期"
3、窗口表BeforeLoad事件 If _Usermdmc = "财务管理中心" Dim fl As String = "[组织] = \'A事业部\' And [组织] = \'B事业部\'
And [组织] = \'C事业部\'" e.DataTable.LoadFilter = fl msgbox("执行了1") ElseIf _Usermdmc = "A财务出纳" Dim f2 As String = "[组织] = \'A事业部\'" e.DataTable.LoadFilter = f2 msgbox("执行了2") ElseIf _Usermdmc = "B财务出纳" Dim f3 As String = "[组织] = \'B事业部\' And [组织] = \'C事业部\'" e.DataTable.LoadFilter = f3 msgbox("执行了3") End If msgbox("执行了4")
4、需求说明: 表列"组织"列对应每行的组织A事业部,B事业部,C事业部, _Usermdmc为用户表的门店名称,全局代码Public _Usermdmc As String \'门店名称 需求:动态加载BeforeLoad,判断登陆用户门店名称=\'财务管理中心\'时,本表允许加载组织=A事业部和组织=B事业部和组织=C事业部,窗口表也按此条件加载,窗口加载树同样按这个规则加载.
5、问题说明: 窗口加载树单独测试没有问题,加载树能够按照双击二级节点加载指定日期的数据,配合BeforeLoad后,窗口加载树双击二级节点,不按照日期加载,搞了三天了,BeforeLoad帮助文档还是没看明白,求助
|
-- 作者:有点蓝 -- 发布时间:2019/12/14 9:54:00 -- 窗口表BeforeLoad事件:http://www.foxtable.com/webhelp/topics/2057.htm Dim fl As String = "" If _Usermdmc = "财务管理中心" fl = "[组织] = \'A事业部\' And [组织] = \'B事业部\' And [组织] = \'C事业部\'" ElseIf _Usermdmc = "A财务出纳" fl = "[组织] = \'A事业部\'" ElseIf _Usermdmc = "B财务出纳" fl = "[组织] = \'B事业部\' And [组织] = \'C事业部\'" End If msgbox(fl ) If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If
|
-- 作者:myjht -- 发布时间:2019/12/14 10:09:00 -- 双击筛选树报错: [此贴子已经被作者于2019/12/14 10:12:36编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/14 10:26:00 -- 这个是msgbox提示,不是报错,自己去掉即可 |
-- 作者:myjht -- 发布时间:2019/12/14 10:47:00 -- @有点蓝 这句And无效:双击目录树后什么都不显示 ElseIf _Usermdmc = "B财务出纳" fl = "[组织] = \'B事业部\' And [组织] = \'C事业部\'" 改成下面这样单独的有效:双击目录树后按节点时间加载了B事业部的行 ElseIf _Usermdmc = "B财务出纳" fl = "[组织] = \'B事业部\'" \' \' \' \' \' \' \' \' \' And [组织] = \'C事业部\'" |
-- 作者:有点蓝 -- 发布时间:2019/12/14 10:51:00 -- If _Usermdmc = "财务管理中心" fl = "([组织] = \'A事业部\' or [组织] = \'B事业部\' or [组织] = \'C事业部\')" ElseIf _Usermdmc = "A财务出纳" fl = "[组织] = \'A事业部\'" ElseIf _Usermdmc = "B财务出纳" fl = "([组织] = \'B事业部\' or [组织] = \'C事业部\')" End If
|
-- 作者:myjht -- 发布时间:2019/12/14 11:34:00 -- @有点蓝 AND,双击加载树的日期,不加载 改成OR,双击加载树的日期,可以加载,但不是按照加载树的日期加载的,如下图的“付款日期” [此贴子已经被作者于2019/12/14 11:35:00编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/14 11:38:00 -- …… If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If msgbox(e.DataTable.LoadFilter) ‘这里弹出什么条件?’
|
-- 作者:myjht -- 发布时间:2019/12/14 12:49:00 -- Year(付款日期) = 2019 And Month(付款日期) = 12 And Day(付款日期) = 14 And [组织] = \'B事业部\' Or [组织] = \'C事业部\' 此主题相关图片如下:3.bmp |
-- 作者:有点蓝 -- 发布时间:2019/12/14 13:23:00 -- 少括号,请认真看6楼代码 |