Foxtable(狐表)用户栏目专家坐堂 → [求助]网络不稳定的情况下进行授权管理


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

主题:[求助]网络不稳定的情况下进行授权管理

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
[求助]网络不稳定的情况下进行授权管理  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/18 10:50:00 [只看该作者]

判断授权表是否存在

 

If DataTables.Contains("授权表") Then

 

Else

 

End If


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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/18 14:04:00 [只看该作者]

判断的代码写在第一行不就行了?

 

先执行LoadUserSettting代码的


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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
  发帖心情 Post By:2015/8/18 14:12:00 [只看该作者]

你的意思是FOXTABLE程序是先LoadUserSettting项目,然后再执行AfterOpenProject项目,并且下述代码放在第一行,无论什么网络不稳定、导致系统错误情况下,在完全打开FOXTABLE项目前,一定能执行到下面的代码?

If DataTables.Contains("授权表") Then

 

Else

         Syscmd.Project.Exit()

End If


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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
  发帖心情 Post By:2015/8/18 14:15:00 [只看该作者]

同时在LoadUserSettting项目和AfterOpenProject项目放入以下代码会不会更安全确保授权表不会失效


If DataTables.Contains("授权表") Then

 

Else

         Syscmd.Project.Exit()

End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/18 14:31:00 [只看该作者]

 多次判断,肯定更安全。

 回到顶部