Ms access 如何防止用户向只读表添加字段?

Ms access 如何防止用户向只读表添加字段?,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我正在制作一个相当简单的表单,其中有一个按钮,可以打开一个表供用户阅读(但不能编辑)。命令如下: DoCmd.OpenTable "Tbl_SendLog", acViewNormal, acReadOnly 好的方面:正如预期的那样,用户不能添加或更改记录 糟糕的是:用户仍然可以添加整个列。更好的是,Access在关闭表时甚至没有“是否保存更改”提示。它只是保存了它 我原以为acReadOnly会处理这件事。显然不是。所以我的问题是:如何修改它,使用户不能添加列 (如果需要,我会为表生成一个

我正在制作一个相当简单的表单,其中有一个按钮,可以打开一个表供用户阅读(但不能编辑)。命令如下:

DoCmd.OpenTable "Tbl_SendLog", acViewNormal, acReadOnly
  • 好的方面:正如预期的那样,用户不能添加或更改记录
  • 糟糕的是:用户仍然可以添加整个列。更好的是,Access在关闭表时甚至没有“是否保存更改”提示。它只是保存了它
  • 我原以为acReadOnly会处理这件事。显然不是。所以我的问题是:如何修改它,使用户不能添加列

    (如果需要,我会为表生成一个表单或报表,但如果有更简单的选项,我会选择它)

    最简单的方法(=工作量最少的方法)是使用查询,正如Remou在评论中所建议的那样

    只需进行查询
    选择*from Tbl_SendLog
    ,并按如下方式打开它:

    DoCmd.OpenQuery "YourQuery", acViewNormal, acReadOnly
    
    Pro:右键单击查询时,上下文菜单中没有“添加列”(就像直接打开表时一样),因此用户无法添加列
    相反:用户仍然可以在查询中切换到设计视图,并将查询搞乱,因此之后可能不再工作

    如果你可以接受(如果你的用户不太可能更改查询),你可以这样做


    如果你不能接受这一点,那么构建表单或表格(正如你在问题中已经建议的那样)可能是最好的解决方案。

    在2010年添加列来自选项,你可以更改这些选项。尝试一个查询而不是一个表,并将其设置为select distinct。