以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]网络不稳定的情况下进行授权管理 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73367) |
-- 作者:乡里出城 -- 发布时间:2015/8/18 10:10:00 -- [求助]网络不稳定的情况下进行授权管理 项目属性下的LoadUserSetting
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("授权表").Visible =
(User.Type <> UserTypeEnum.User ) If
User.Type <> UserTypeEnum.User Then
Return End If For Each dr As DataRow In
DataTables("授权表").Select("用户名 = \'" &
User.group & "\'" )
If dr.IsNull("列名") Then
For Each t As Table In Tables
If t.DataTable.Name = dr("表名") Then t.Visible = Not dr("不可见") t.AllowEdit = Not dr("不可编辑")
End If
Next
Else
For Each t As Table In Tables
If t.DataTable.Name = dr("表名") Then For Each c As Col In t.Cols If c.Name = dr("列名") Then c.Visible = Not
dr("不可见") c.AllowEdit = Not
dr("不可编辑") End If Next
End If
Next
End If Next 以上代码使用没问题,主要问题是有时打开项目(网络可能不稳定,如联通网接入电信网),导致Tables("授权表")不能正常加载,从而对组设置的权限没有了,该禁止的表列就失效了,请教如何才能解决这个问题(保证Tables("授权表")有效的加载在项目里,权限得到有效控制),我想问做一个内部关联表(父表),当外部授权表(子表)加载不成功后,就起启内部(父表),每次能成功加载就更新子表,可这样好吗?请教有经验的人士或各路高手。 [此贴子已经被作者于2015/8/18 10:11:40编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/8/18 10:50:00 -- 判断授权表是否存在
If DataTables.Contains("授权表") Then
Else
End If |
-- 作者:乡里出城 -- 发布时间:2015/8/18 13:29:00 -- 是在AfterOpenProject项目属性下设这个就可以了吗? If DataTables.Contains("授权表") Then
Else Syscmd.Project.Exit() End If 但有一个问题,就是有时开机因网络问题,导致AfterOpenProject项目里面有代码都不执行的,那上述代码有作用吗? 还是在SystemIdle项目里放入 If DataTables.Contains("授权表") Then
Else Syscmd.Project.Exit() End If [此贴子已经被作者于2015/8/18 13:31:08编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/8/18 14:04:00 -- 判断的代码写在第一行不就行了?
先执行LoadUserSettting代码的 |
-- 作者:乡里出城 -- 发布时间:2015/8/18 14:12:00 -- 你的意思是FOXTABLE程序是先LoadUserSettting项目,然后再执行AfterOpenProject项目,并且下述代码放在第一行,无论什么网络不稳定、导致系统错误情况下,在完全打开FOXTABLE项目前,一定能执行到下面的代码? If DataTables.Contains("授权表") Then
Else Syscmd.Project.Exit() End If |
-- 作者:乡里出城 -- 发布时间:2015/8/18 14:15:00 -- 同时在LoadUserSettting项目和AfterOpenProject项目放入以下代码会不会更安全确保授权表不会失效 If DataTables.Contains("授权表") Then
Else Syscmd.Project.Exit() End If |
-- 作者:大红袍 -- 发布时间:2015/8/18 14:31:00 -- 多次判断,肯定更安全。 |