密码保护MS Access 2003中的表单

时间:2011-04-26 17:10:21

标签: forms ms-access

我正在尝试为我的数据库创建一个登录名,我不想使用Microsoft的方式这样做。我想让用户使用用户名和密码登录,然后在“tblUsers”表中验证该信息。

UserID   LoginID   Level    LevelID
jpurk    jack23     admin    3
krimes   kitty      editor   2
lwalms   low34      reader   1

我使用dlookup验证了“UserID”和“LoginID”

Nz(DLookup("[LoginID]", "tblUsers", "[UserID] = '" & Me.txtUserID & "'"), "")
 =Me.txtPassword

我现在遇到的问题是,我希望菜单上的某些项目对于没有适当级别的用户不可用;如果他们只是“编辑”或“读者”,那么我不希望他们访问我放置所有管理表单的“管理”按钮。

在我使用dLookup验证用户名和密码后,我现在如何找到他们的“级别”并为不同的菜单项分配权限?谢谢。

1 个答案:

答案 0 :(得分:2)

假设您的DLookup找到了现有的LoginID值,您可以使用另一个来检索该用户的LevelID。然后根据LevelID启用/禁用管理命令按钮。

我会在Form Load中建议这样的事情:

Dim lngLevelID As Long
lngLevelID = DLookup("[LevelID]", "tblUsers", "[LoginID] = " & Me.txtLoginID)
Me.cmdAdmin.Enabled = (lngLevelID = 3)

注意:假设您之前已将用户的LoginID号加载到名为txtLoginID的文本框中。如果您不希望用户看到它,则可以隐藏txtLoginID。或者您可以通过其他方法获取LoginID值。

如果Level和LevelID之间存在一对一的匹配,则不需要在tblUsers中存储这两个值。您可以创建一个UserLevels查找表来保存它们,并将TblUsers中的LevelID仅存储为UserLevels中相应行的外键。

最后,你正在使用的策略可以工作,但安全性很不稳定。作为愿意遵守规则的用户的“指导”,没关系。但即使是不熟练的用户也很容易避开它。如果您的安全需求非常严格,请寻找不同的方法。