Foxtable(狐表)用户栏目专家坐堂 → [求助] 关于加载数据的问题


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

主题:[求助] 关于加载数据的问题

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
[求助] 关于加载数据的问题  发帖心情 Post By:2016/9/1 19:21:00 [只看该作者]

首先有个  用户表   表b  表c
想让不同用户通过用户表的加载集合和本部集合来确定该表加载范围
比如张三加载  表B|本部     其中本部就是从‘本部集合’中获取名字来加载
                   表C|所有    就是可以看到表C的所有数据
当然,如果是本人,则只能看到自己的数据行
想到用split(","split("|")  以及LoadFilter like 但就是不成功,求帮助,例子一楼上传不了,传二楼

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2016/9/1 19:24:00 [只看该作者]

例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb



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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2016/9/2 11:15:00 [只看该作者]

你好,蓝老师,我用户名采用了全局变量 _UserName  也使用了默认用户,怎么我将
Dim dr As DataRow  = DataTables("用户管理").Find("姓名= _UserName ") 
放在窗口afterload事件中  提示    未找到列 [_UserName]。

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 11:28:00 [只看该作者]

Dim dr As DataRow  = DataTables("用户管理").Find("姓名= '" & _UserName & "'") 

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2016/9/2 11:39:00 [只看该作者]

提示   在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式。

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2016/9/2 13:25:00 [只看该作者]

Dim dr As DataRow  = DataTables("用户管理").SQLFind("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
我用msgbox(ts(0))出来有几个表,但我只想要“用户管理”表 该如何判断呢    上面说的列名无效是其他表的,
因为我是吧代码放在“用户管理”窗口的afterload里面的,所以不需要判断其他表
如何判断ts(1)是否存在“用户管理”表,

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 13:51:00 [只看该作者]

你的逻辑有问题。用户管理表是用来控制其它表的加载的,不是用来控制自身的加载的,那没有意义。

2楼例子运行3楼代码看效果

 回到顶部