Office中国论坛/Access中国论坛

标题: 请教高手:用户登录和权限 [打印本页]

作者: 淡若远山    时间: 2010-4-19 19:32
标题: 请教高手:用户登录和权限
本帖最后由 淡若远山 于 2010-4-20 11:26 编辑

请教高手:本人已经做了一个简单的系统,表\查询\窗体等都做好了,现在想做一份简单的用户登录和权限的东东,稍微控制一下访问者,但由于本人不会VBA,已经遍访本论坛,从本论坛下载了附件的登录程序,但发现简单的导入附件程序中相应权限\用户表,窗体、模块到我原来的数据库后,仍然无法完全使用。
已经更改了权限和用户表中相应的用户名和窗体名,但发现控制权限(只读、编辑)只对原作者程序中的窗体名有效,对我自制的窗体名无效。
不知道还要改什么地方?
赶着交差了,请各位高手指点!
小生的access水平:表、查询、窗体、报表、宏等基本的各种设置都懂一些,但模块和VBA基本一窍不通,希望各位大佬有的放矢。

附件是原来下本论坛下载的东东,好像是黄海做的吧,在此一并谢过,还希望继续赐教!

顺便再请教一下,如何禁止使用SHIFT键?网上能找到一段段的代码,但这代码如何加到access里去呢?直接保存为一个模块吗,有什么需要注意的地方?
作者: asklove    时间: 2010-4-20 08:38
表-权限表-窗体名
改成你自己的窗体名称

你可以新建一个窗体
放二个命令按钮:启用(Command1),禁用(Command0)
把下面的粘贴进去:
'设置方法:
'1)启用 SetBypassProperty True
'2)禁用  SetBypassProperty False

Private Sub Command0_Click()
SetBypassProperty False
End Sub

Private Sub Command1_Click()
SetBypassProperty True
End Sub
Function SetBypassProperty(Allow As Boolean)

    Const DB_Boolean As Long = 1
   
    If Allow = True Then
        ChangeProperty "AllowBypassKey", DB_Boolean, True
        MsgBox "启用Shift键设置成功!", vbInformation
    Else
        ChangeProperty "AllowBypassKey", DB_Boolean, False
        MsgBox "禁用Shift键设置成功!", vbInformation
    End If
   
End Function

Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
    Dim DBS As Object, prp As Variant
    Const conPropNotFoundError = 3270

    Set DBS = CurrentDb
    On Error GoTo Change_Err
    DBS.Properties(strPropName) = varPropValue
    ChangeProperty = True
   
   
Change_Bye:
    Exit Function

Change_Err:
    If Err = conPropNotFoundError Then
        Set prp = DBS.CreateProperty(strPropName, _
            varPropType, varPropValue)
        DBS.Properties.Append prp
        Resume Next
    Else
        
        ChangeProperty = False
        Resume Change_Bye
    End If
End Function
作者: 淡若远山    时间: 2010-4-20 11:26
非常感谢asklove 的热心回答。

但:
1、“表-权限表-窗体名  改成你自己的窗体名称”
改了,应该也不行呀,我把附件发上来,在其中做了一个测试窗体,虽然在权限表中进行了设置,但实际却无法对其进行操作控制。
比如说,即使直接用SHIFT进去,点击原窗体时,都会提示“必须登陆才能查看”,但点击测试窗体就没有任何提示就进去了。
是不是还有什么地方要改呢?(比如模块中?)

2、asklove给的代码是解决shift禁用的问题吧?
   我已经建好了窗体,也设好了按钮,但代码该从哪里粘贴进去呢?
   不好意思,本人这方面的确很菜,汗!
请高手继续指点!
作者: 淡若远山    时间: 2010-4-20 11:28
具体示例请参选1楼的附件,已经修改过了,修改了权限表 和增加了启用禁用窗体与按键(但未粘代码)
谢谢了!请多指点!
作者: asklove    时间: 2010-4-21 08:22
打开事件中有这句啊,你没注意看:
Private Sub Form_Open(Cancel As Integer)
Cancel = Not IsPurview(Me)  '用于判断当前用户是否有打开该窗体的权限
End Sub

控件按钮-右键-事件生成器中,可以看到代码,粘贴在此处
作者: 淡若远山    时间: 2010-4-21 19:48
谢谢asklove的热心回答,两个问题都明白了,受益匪浅!

不过还有一点小小的疑问,打开窗体的控制有效了,没授权的打不开,但对编辑的限制好像无效,没授权的仍可编辑?
作者: laoyaoyang    时间: 2010-7-17 11:29
LZ的附件有密码?打不开。
可否告知,谢谢
作者: hope678    时间: 2011-8-9 15:54
谢谢asklove的热心回答,两个问题都明白了,受益匪浅!

不过还有一点小小的疑问,打开窗体的控制有效了,没授权的打不开,但对编辑的限制好像无效,没授权的仍可编辑?

同问啊?期待高手帮忙解决~~
作者: yuanhongtao1    时间: 2011-8-31 09:25
学习了
作者: 闲心    时间: 2012-6-21 11:36
学习了
作者: liuxiangyucdpc    时间: 2012-7-22 13:48
做个记号,有空好好学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3