您可以创建不同版本的表单。一个可能有Allow Edits, No
,另一个可能是Data Entry, Yes
,这意味着它只能用于创建新记录。
但是,假设有人正在创建新记录,并且他们错误地选择了错误的 FK。他们如何纠正这一点?您可以使用 VBA 在第一个实例中生成一个确认对话框,也许还有一个撤消按钮,VBA 会故意执行撤消。Access 2010 还具有数据宏(相当于触发器),当用户更改 FK 值时,您可以使用这些数据宏来存储旧值和新值以及其他信息。
Access 没有实现用户级别的安全性,因此用户仍然可以打开和更改原始数据表中的数据。但是,您应该在表连接上强制执行参照完整性,以便用户无法输入在相关表中尚未作为 PK 存在的 FK。
总之,您可以向组合框添加额外的列以帮助用户选择正确的项目,并且您可以考虑在将记录保存到数据表之前使用额外的确认对话框(MsgBox)。但是你不能阻止人们犯错误。(强制参照完整性将防止输入无意义的数据。)
第二个问题:组合框(或可能是列表框)是用户输入 FK 值的最简单方法,无需依赖内存。另一种方法是使用打开辅助表单的按钮(或其他控件和事件)。此表单可能具有一些过滤功能来帮助用户找到正确的 FK 值。当这个表单关闭时,您需要编写一些代码来更新主表单上的相关控件。