我在Microsoft Access中有一个连接到sql server的ODBC链接表。
对于某些用户,连接SQL Server访问权限的登录只能访问具有db_datareader角色的一个数据库,因此无法编辑表中的任何数据。 对于其他用户,他们有db_datareader + db_datawriter角色,他们可以编辑任何数据。
如果db_datareader登录,如何在vba中检查我的表是不可编辑的?
答案 0 :(得分:3)
您可以使用直通查询来获取用户角色成员资格,使用querydef创建或访问它们:
Public Function is_datawriter() As Boolean
Dim qdef As DAO.QueryDef
Dim rst As DAO.Recordset
Set qdef = CurrentDb.CreateQueryDef("")
qdef.Connect = "ODBC; MY_ODBC_CONN_STRING"
qdef.SQL = "SELECT IS_ROLEMEMBER('db_datawriter')"
Set rst = qdef.OpenRecordset(dbOpenDynaset)
If rst.Fields(0).Value = 1 Then is_datawriter = True
End Function
测试特定于表的权限有点困难,但在您的情况下,这可能会有所帮助。