以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何判断可视化授权用户不可见的列不能取消隐藏?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7592)

--  作者:ddlzq
--  发布时间:2010/7/14 18:39:00
--  [求助]如何判断可视化授权用户不可见的列不能取消隐藏?

各位老师:

可视化授权中有不可见权限的控制,但对于列,用户可以取消隐藏即可破解此不可见,请问如何批量做真的不可见呢?

我查了咱论坛,狐爸说过用Cols

方法名 说明
Remove 从Table中移除指定的列
Contains 用于判断是否包括指定名称的Col

来解决,这样需要都写出列的列名来,请问老师,能不能指点一些思路,对于表中用户很多、列很多的情况下,能够用最短的代码来完成这种 工作呢?如果能帮写段代码那就更好了,呵呵,万分感谢!

还有狐爸说过有好多方法,能不能给菜鸟多指点一些?

还有用禁菜单的方法,但用户有时为了方便查看不同的列,还有用户真用到隐藏和取消隐藏功能。

能不能有比较完美的方法呢?

 

另外狐爸下一版开发版能不能默认禁用 禁用开发和禁止设置数据源?菜鸟一不小心忘了关闭这两个功能,一是用户查看到了数据库连接密码,二是用户居然通过调取外部表来改动数据...有够BT...汗...

另外能不能通过程序的版本号来回收旧程序,指定哪版在有新版发布后禁止旧版程序连接数据呢?

 

通过慢慢的学习狐表越发感觉狐表越来越强大,能实现的东东太多了,呵呵...前几天微软公司来电话,问我们用什么MS的OFFICE产品,我说用的是fOXTABLE,解决了MS的共享问题,我还告诉他们咱们论坛地址呢。呵呵,微软说,那真要去看看喽,微软会虚心学习好的软件的,呵呵...

[此贴子已经被作者于2010-7-14 18:43:52编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/7/15 6:45:00
--  

1、一样可以用隐藏列的办法,至于代码用

 

\'\'\'\'前面的代码

If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = \'" & User.Name & "\'" )
        If
dr.IsNull("列名")
Then
       
    Tables(dr("表名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).AllowEdit = Not dr("不可编辑")

        Else
            If Tables(dr("表名")).Cols.Contains(dr("列名"))= True Then
                Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑"
               
Tables(dr("表名")).Cols.Remove((dr("列名"))
            End If
        End
If
    Next
End
If

 

2、关于数据源,发布的程序默认就是修改不了的。

 

3、版本的问题是没有办法的,毕竟新版旧版都有人用的。


--  作者:lxl
--  发布时间:2010/7/15 8:08:00
--  

3.可以把最新版本存到数据库里面。程序连接数据库时对比一下版本。

QQ有时候就是强制更新的。


--  作者:狐狸爸爸
--  发布时间:2010/7/15 8:49:00
--  

呵呵,好办法

 

图片点击可在新窗口打开查看


--  作者:ddlzq
--  发布时间:2010/7/15 10:53:00
--  

感谢楼上两位老师,看懂了狐爸给提供的方法了,加了行

Tables(dr("表名")).Cols.Remove((dr("列名"))

我测试一下...

 

3楼LXL老师说的把新版本存到数据库里面,是发布过的程序?还是程序版本号呢?能不能帮忙举个小例呢?谢谢老师了...


--  作者:狐狸爸爸
--  发布时间:2010/7/15 10:58:00
--  
LXL版主的意思是,在数据库加入软件版本号,在AfterOpenProject事件中检查数据库中的版本号,如果比本机的版本号新,则提示更新。
--  作者:ddlzq
--  发布时间:2010/7/15 21:18:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:error.jpg
图片点击可在新窗口打开查看

狐爸,我用您提供的代码,出错了,这是为何?


--  作者:ddlzq
--  发布时间:2010/7/15 21:19:00
--  

哦,原来是这样啊,等明天到单位试下...

也就是以后发布的都写上AfterOpenProject事件中检查数据库中的版本号?

 

[此贴子已经被作者于2010-7-15 21:20:37编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/7/15 21:59:00
--  
7楼问题是因为多了"("
--  作者:ddlzq
--  发布时间:2010/7/16 9:24:00
--  

哦 ,看到了,呵呵Remove((dr("列名"))
一直在找右括号,没发现原来是左括号-_-||| 我需要提高认真度了...再次谢谢狐爸

((