这个问题可能是由于ADOX不是用作访问控制的最佳工具所致。此外,某些权限对Access表单没有什么意义。您可以尝试使用DAO来获取表单权限,例如以下示例代码:
Dim db As DAO.Database
Dim frm As DAO.Form
Set db = CurrentDb()
Set frm = db.Containers("Forms").Documents("MyForm")
Debug.Print frm.Properties("AllowAdditions").Value
该代码将输出“-1”(True)或“0”(False),这取决于表单是否允许添加。您可以根据表单的属性(例如,AllowDeletions、AllowEdits等)检查其他权限。
如果您仍然希望使用ADOX,可以尝试使用权限枚举的方式,如下面的示例代码所示:
Dim cn As ADODB.Connection
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set cat = New ADOX.Catalog
cat.ActiveConnection = cn
Set tbl = cat.Tables("MyForm")
Set rs = tbl.GetPermissions
Debug.Print rs.Fields("Permission").Value
该代码将输出该表单的权限标志(例如,0x00000001表示SELECT权限)。
综上所述,使用DAO可以更可靠地获取Access表单的权限。