以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老大请教个问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174356)

--  作者:xiaofei_00
--  发布时间:2022/1/12 11:16:00
--  老大请教个问题
我的程序中采用的外部数据源,数据源中有5个表格,其中一个是权限表,我的权限设置是不同的人看到不同的表,只能对他自己看见的表进行部分操作,现在的问题是我们的服务器不是很稳定,有的时候打开软件加载表格时由于网速的问题报错,就是本应该他看不到的表格由于出错他也看到了,我分析是权限表没有加载或者加载不完全的原因造成的,我的问题是这样情况下他是否对出错本不该看到的表格进行修改?会不会越过我设置的权限,最后造成我的数据不安全??????请老大明示,还有这样的问题怎么避免??
--  作者:lgzhao
--  发布时间:2022/1/12 11:19:00
--  
开始不加载任何数据表。在相应功能按钮内设置加载外部表。
--  作者:有点蓝
--  发布时间:2022/1/12 11:44:00
--  
不要加载权限表,使用SQLcommand获取权限表数据,如果SQLcommand出错,就退出程序

[此贴子已经被作者于2022/1/12 11:43:43编辑过]

--  作者:xiaofei_00
--  发布时间:2022/1/12 13:27:00
--  
老师能给我个参考吗?我是按照咱的帮助文件一点一点做起来的,有些真的不大懂,就是可视化授权那一节的内容搞得
[此贴子已经被作者于2022/1/12 13:29:38编辑过]

--  作者:有点蓝
--  发布时间:2022/1/12 13:44:00
--  
http://www.foxtable.com/webhelp/topics/0696.htm
[此贴子已经被作者于2022/1/12 14:02:45编辑过]

--  作者:xiaofei_00
--  发布时间:2022/1/12 13:59:00
--  
老师实在不好意思我了还是不知道怎么用,我的授权表就是叫”授权表“,请问我要怎么读取它的数据呢?代码写在哪里?怎么写?请您出手给写一段代码吧,万分感谢
--  作者:有点蓝
--  发布时间:2022/1/12 14:04:00
--  
发错了,这个帮助:http://www.foxtable.com/webhelp/topics/0696.htm

Dim cmd As New SQLCommand
cmd.ConnectionName = "数据源名称"
Dim
 dt As DataTable
cmd.CommandText = "SELECT DISTINCT 客户 From {授权表}"
dt = cmd.ExecuteReader()

然后可以使用dt替代datatables("授权表")

--  作者:xiaofei_00
--  发布时间:2022/1/12 14:15:00
--  
For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("ACCshqb").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("ACCshqb").Select("分组名 = \'" & User.Group & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End If
    Next
End If


老师这是我的授权表使用的代码,您给的代码我要怎么用呢?

--  作者:有点蓝
--  发布时间:2022/1/12 14:19:00
--  

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("ACCshqb").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
Dim cmd As New SQLCommand
cmd.ConnectionName = "数据源名称"
Dim
 dt As DataTable
cmd.CommandText = "SELECT * From {ACCshqb} where 
分组名 = \'" & User.Group & "\'"
dt = cmd.ExecuteReader()
    For Each dr As DataRow In dt.datarows
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End If
    Next
End If

--  作者:xiaofei_00
--  发布时间:2022/1/12 14:35:00
--  
感谢老师,哪天老师来淄博我请您吃饭