以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 关于加载数据的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89946) |
||||
-- 作者:188802386 -- 发布时间:2016/9/1 19:21:00 -- [求助] 关于加载数据的问题 首先有个 用户表 表b 表c 想让不同用户通过用户表的加载集合和本部集合来确定该表加载范围 比如张三加载 表B|本部 其中本部就是从‘本部集合’中获取名字来加载 表C|所有 就是可以看到表C的所有数据 当然,如果是本人,则只能看到自己的数据行 想到用split(",") split("|") 以及LoadFilter like 但就是不成功,求帮助,例子一楼上传不了,传二楼
|
||||
-- 作者:188802386 -- 发布时间:2016/9/1 19:24:00 -- 例子
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/2 8:26:00 -- LoadUserSetting事件 Dim dr As DataRow = DataTables("用户管理").Find("姓名=\'" & User.Name & "\'") If dr Is Nothing OrElse dr.IsNull("加载集合") Then DataTables("表B").LoadFilter = "false" DataTables("表C").LoadFilter = "false" DataTables("表B").load DataTables("表C").load Else Dim dtn() As String = dr("加载集合").split(",") For Each tn As String In dtn Dim ts() As String = tn.Split("|") Select Case ts(1) Case "本人" DataTables(ts(0)).LoadFilter = "第一列=\'" & User.Name & "\'" Case "所有" DataTables(ts(0)).LoadFilter = "" Case Else DataTables(ts(0)).LoadFilter = "第一列 in (\'" & dr("本部集合").replace(",","\',\'") & "\')" End Select DataTables(ts(0)).load Next End If |
||||
-- 作者:188802386 -- 发布时间:2016/9/2 11:15:00 -- 你好,蓝老师,我用户名采用了全局变量 _UserName 也使用了默认用户,怎么我将 Dim dr As DataRow = DataTables("用户管理").Find("姓名= _UserName ") 放在窗口afterload事件中 提示 未找到列 [_UserName]。
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/2 11:28:00 -- Dim dr As DataRow = DataTables("用户管理").Find("姓名= \'" & _UserName & "\'") |
||||
-- 作者:188802386 -- 发布时间:2016/9/2 11:39:00 -- 提示 在应使用条件的上下文(在 \')\' 附近)中指定了非布尔类型的表达式。 |
||||
-- 作者:188802386 -- 发布时间:2016/9/2 12:42:00 -- Dim dr As DataRow = DataTables("用户管理").Find("name = \'" & _username & "\'") 总是这里有问题, If dr Is Nothing OrElse dr.IsNull("加载范围集合") Then DataTables("用户管理").LoadFilter = "false" DataTables("用户管理").load Else Dim dtn() As String = dr("加载范围集合").split(",") For Each tn As String In dtn Dim ts() As String = tn.Split("|") Select Case ts(1) Case "本人" DataTables(ts(0)).LoadFilter = "姓名 = & _UserName1" Case "所有" DataTables(ts(0)).LoadFilter = "" Case Else DataTables(ts(0)).LoadFilter = "部门名称 In (\'" & dr("本部集合").replace(",","\',\'") & "\')" End Select DataTables(ts(0)).load Next End If
|
||||
-- 作者:188802386 -- 发布时间:2016/9/2 13:25:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/2 13:51:00 -- 你的逻辑有问题。用户管理表是用来控制其它表的加载的,不是用来控制自身的加载的,那没有意义。 2楼例子运行3楼代码看效果
|