我正在尝试限制我的Access数据库被某些人使用,并根据他们的身份给这些人一些限制。我正在看几篇关于创建一个包含用户和密码的表并使用一些VBA代码进行验证的文章(或者其他类似的东西,我很VBA不识字)。有谁知道我在哪里可以找到关于如何做到这一步的一步一步的文章?
或者,也许在我有一个带有其他表单链接的表单的地方更简单。链接将显示“数据输入”,“管理器”等,并且链接可以受密码保护。即,当Manager单击Manager链接时,他必须输入密码,然后将其转到可以编辑任何和所有信息的表单。然而,当数据输入点击时,他们输入一个不同的密码,然后被带到一个表单,在那里他们只显示他们可以编辑的字段。
先谢谢你。
答案 0 :(得分:1)
安全性是MS Access的关键点。如果要实现登录功能,我假设您的业务模型包含某些敏感信息。这种商业模式通常期望/需要的不仅仅是普通的软件设计技能。
首先,您需要从
开始定义/设计业务需求MS Access允许查看表格内容,这意味着,当您保存用户详细信息时,任何用户都可以访问该表格,这将查看用户详细信息并能够使用/绕过它们。
当您编译您的Access数据库到MDE或ACCDE时会获得某种安全性,这将阻止用户访问VBA功能或进入设计模式。这可能会在很多方面帮助您提高安全性。包括发布前端应用程序的更新。
回答有关用户访问级别的问题。我会亲自拆分数据库,以便在整个应用程序中维护集中数据。如果您的应用程序非常小,您可以在本教程中使用简单的登录表单功能。 http://www.databasedev.co.uk/login.html
要区分用户级别,您需要创建用户角色表并为每个用户分配角色。如果是,则允许执行操作,创建一个新功能,检查用户是否已分配给所请求的角色。如果没有警告用户。像这样的东西:
表格如下:
检查用户级别的简单功能:
Public Function FN_IS_USER_IN_ROLE(iUSER_ID As Long, iREQ_ROLE As String) As Boolean
Dim MyDB As Database
Dim MyRS As Recordset
On Error GoTo FN_IS_USER_IN_ROLE_Error
FN_IS_USER_IN_ROLE = False
Dim SQL_GET As String
SQL_GET = "SELECT tbl_user.user_name, tbl_roles.role_name " & _
"FROM (tbl_user_roles INNER JOIN tbl_user ON tbl_user_roles.user_Id = tbl_user.user_id) INNER JOIN tbl_roles ON tbl_user_roles.role_id = tbl_roles.role_id " & _
"WHERE (((tbl_user.user_id)=" & iUSER_ID & ") AND ((tbl_roles.role_name)='" & iREQ_ROLE & "')); "
Set MyDB = CurrentDb
Set MyRS = MyDB.OpenRecordset(SQL_GET)
Dim mRc As Long
mRc = Nz(MyRS.RecordCount, 0)
If mRc > 0 Then
FN_IS_USER_IN_ROLE = True
End If
On Error GoTo 0
Set MyRS = Nothing
Set MyDB = Nothing
Exit Function
FN_IS_USER_IN_ROLE_Error:
FN_IS_USER_IN_ROLE = False
Dialog.Box "Error " & Err.Number & " (" & Err.description & ") in procedure FN_IS_USER_IN_ROLE", vbExclamation
End Function
并通过以下方式检查用户是否有足够的权限:
Dim PR As String
PR = "Admin"
If (FN_IS_USER_IN_ROLE(PR)) Then
'Do something
Else
'Me.Undo
'Cancel = True
MsgBox "You do not have sufficient permissions to perform this task!" & vbNewLine & "Required access level: " & PR, vbCritical, "Access denied.."
Exit Sub
End If
试试这个,如果你成功了,请告诉我们。
答案 1 :(得分:0)
你想要一个front end/back end database。您可以在数据库工具 - >中找到Access中的拆分功能。 移动数据 - > Access Database 或者您可以通过创建另一个包含表单和linking
表的数据库来手动构建两个DB。
后端是具有所有管理员访问权限的主数据库。这可以通过转到文件 - >进行密码保护。 信息 - > 使用密码加密。它包含所有数据表。
前端数据库是表单的用户界面。这与后端相关联,以便它可以更新已提供表单的后端。