以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [原创]权限问题(已解决!)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=11406)

--  作者:exonjee
--  发布时间:2011/7/21 10:56:00
--  [原创]权限问题(已解决!)

设计了一个用户权限管理表,在项目事件中MainTableChanging写入以下代码,但在程序登录输入完成用户名和密码(成功登录后会给全局变量_username赋值用户名,这个用户名在用户权限表中也是存在的,也同时已分配打开表的权限)后会自动关闭程序进程退出,请教此段代码有问题吗?项目事件中MainTableChanging和登录窗口执行有冲突吗?怎样调整?

 

Dim dr As DataRow
dr=DataTables("用户权限").find("用户=\'" & _username & "\' and 表名=\'" & e.newtablename & "\' and 停用=0")
If dr IsNot Nothing Then
    Vars("QX_gridname")=dr("表名")
    Vars("QX_opengrid")=dr("打开表")
    If vars("QX_opengrid")=True The
        MainTable=Tables(vars("QX_gridname"))
        DataTables(vars("QX_gridname")).allowedit=Vars("QX_editgrid")
    Else
        e.cancel=True
        messagebox.show("您无权限打开所选表,请和系统管理员联系!","提示")
    End If
Else
    e.cancel=True
    messagebox.show("当前用户权限未分配,请检查权限分配表,和系统管理员联系!","提示")
End If
End If

 

设想是在切换表时,先读取用户权限表,然后判断能否打开程序和分配相应的权限。

[此贴子已经被作者于2011-7-21 16:05:23编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/7/21 11:01:00
--  
为啥不直接在AfterOpenProject事件设置代码,隐藏禁止登录用户使用的表。
--  作者:exonjee
--  发布时间:2011/7/21 11:06:00
--  

想动态管理用户权限,还有很多权限没有列出来,比如打印,锁定行等共有20个单独权限和表相关,这20个单独权限每个表可以动态设置管理的。


--  作者:exonjee
--  发布时间:2011/7/21 11:17:00
--  
可能有几百个用户,有很多个分组,分组用户的权限采用基本配置,针对个别的用户可采取动态配置,所以需要这样的设计,请问这个问题如何解决,是什么原因引起报错?
--  作者:exonjee
--  发布时间:2011/7/21 11:23:00
--  

请教老大如何解决这个问题?


--  作者:狐狸爸爸
--  发布时间:2011/7/21 11:45:00
--  

报错原因,要有例子才能知道。

建议这种禁止表的功能,还是设置在AfterOpenProject事件中为好。


--  作者:exonjee
--  发布时间:2011/7/21 16:05:00
--  

取消了在项目事件中的定义,通过自定义函数已实现获取权限!