我想知道是否可以创建一个对表的非常特定的(过滤的)记录集具有读/写访问权限的表单。
为了实现这一点,我:1. 创建一个查询来过滤表中的记录。2. 创建一个以此查询作为其记录源的表单。
但是查询不可更新,我无法从表单更新原始表的内容。有人知道如何解决这个问题吗?
以下是一篇相关文章:http://www.fmsinc.com/Microsoftaccess/query/non-updateable/index.html
谢谢。
答案1
当我深入研究 Access 开发时,我曾多次遇到这个问题。大多数简单查询都是可更新的,但其他查询则不能。您可以通过尝试编辑结果集中的值来判断。在假设您无法执行此操作之前,我会先尝试您的查询。
我使用了一种技术,如果所有其他方法都失败了,它可以很好地解决这个问题,但设置和维护起来有点麻烦——您要做的就是将您拥有的选择查询转换为附加查询,并将记录 ID 仅保存到临时表中。您可以将其作为表单打开事件的一部分(从内存中 - 可能需要使用 me.requery)或更好的是作为菜单/按钮代码的一部分来执行此操作,该菜单/按钮将您带到表单。然后,您使用一个更简单的查询作为表单记录源,只需通过 ID 将临时表连接到原始表即可。
这应该可行,但现在您还需要执行其他一些任务,例如每次使用前/后清空临时表,这对多用户来说并不友好。如果您需要多个用户使用它,您还需要向表中添加某种 USERID。我希望这有意义!
答案2
另一种方法是使用表作为源,然后设置过滤值使其成为您正在寻找的子集。
正如@Saulysw 提到的,选择查询应该允许您更新。您可以发布用作源的查询的 SQL 吗?