如何在AccessVBA中查看ODBCSQLServertable是否有写权限?

How to check in Access VBA whether ODBC SQL Server table has write access?

我在 Microsoft Access 中有一个连接到 sql 服务器的 ODBC 链接 table。

对于某些用户,连接访问 SQL 服务器的登录名只能访问具有 db_datareader 角色的一个数据库,因此他们无法编辑 table 中的任何数据。 对于其他用户,他们具有 db_datareader + db_datawriter 角色,他们可以编辑任何数据。

如果 db_datareader 登录,我如何检查 vba 我的 table 不是 editable?

您可以使用直通查询获取用户角色成员身份,并使用 querydefs 来创建或访问它们:

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

测试 table 特定权限稍微困难一些,但在您的情况下,这可能就可以了。