【问题标题】:MS Access forms read onlyMS Access 表单只读
【发布时间】:2019-03-05 20:14:35
【问题描述】:

我有一个以 MS 访问表单开发的应用程序,指向 SQL Server 数据库。表单端的连接字符串使用对 SQL Server 数据库具有完全访问权限的 DB 用户。

我想将 Access 表单设为只读,或者说,不想在 DB 端执行任何插入/更新/删除操作。

是否有任何设置可用于使整个 Access 表单菜单只读?我尝试将允许编辑/允许添加等表单设置设置为“否”,但这不起作用。

请帮忙。

谢谢

【问题讨论】:

  • “整个访问表单菜单”是什么意思?必须针对这些限制设置每个表单的属性。 “不起作用”是什么意思?
  • 更好、更轻松地依赖 SQL Server 安全性。设置另一个仅对数据具有读取权限的用户并在连接中使用该用户,或者更好的是,使用 Windows AD 身份验证并将用户置于具有只读角色的适当 AD 组中。
  • @June17 我已经尝试为每个表单进行这些设置,但它仍然可以让我修改并保存到我不想要的数据库中。我想限制用户添加、修改到数据库
  • @LordPeter.. 是的,我也考虑过这一点,并已请求只读 SQL Server DB 用户。但是,在访问表单级别的连接字符串中提供此用户详细信息不会在表单级别出现任何错误吗?
  • @LordPeter.. 您能否提供有关 Windows AD 身份验证的更多详细信息以及它是如何工作的?谢谢..

标签: database ms-access


【解决方案1】:

IMO 最好和最简单的方法是将表单 RecordsetType 设置为 Snapshot 而不是默认的 Dynaset

它可以防止对绑定数据进行任何插入/更新/删除,但允许您在未绑定的控件中输入数据,例如搜索字段。

【讨论】:

    【解决方案2】:

    你可以打开一个表单

    DoCmd.OpenForm "myform", DataMode:=acFormReadOnly, ... other required parameters
    

    或者,您可以将表单和任何子表单的Allow AdditionsAllow EditsAllow Deletions 属性设置为False

    【讨论】:

    • 我不想更改 VBA 端的任何代码,因此设置更改有所帮助。
    【解决方案3】:

    你有几个选择。

    在表单属性表,数据选项卡中,设置允许编辑=否。

    在 sql server 上为表创建视图 - 除非您在链接过程中选择 PK,否则链接视图不可更新。所以链接的视图是只读的。

    创建传递查询。并将表单基于该传递查询。所有 PT 查询都是只读的。

    所以以上是 3 个选项,不需要您在服务器端更改或设置权限。

    【讨论】:

    • 谢谢,我试过了,你的第一个选项不错,第二个和第三个有一些代码更改,但也可以..谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多