0

在相关表中,您需要输入 FK 以链接到父表。您要么从记忆中键入 FG !!!!!! 或使用帮助。标准程序是将字段设计为组合框并使用 SQL 选择有助于输入父表 ID 的字段。因此,如果您想输入外键 3 ,组合框将显示 3 是什么,然后当您选择 Access 时,将为您插入 3。

我的问题是,因为我以后可以编辑表格并将值更改为另一个值,然后把整个事情搞砸了!!!如何锁定我的第一选择,使其保持未经编辑?

我的第二个问题是:如果您不记得确切的 ID 号或父表中有数千条记录,这是输入 FK 的唯一方法吗?

4

2 回答 2

0

您可以创建不同版本的表单。一个可能有Allow Edits, No,另一个可能是Data Entry, Yes,这意味着它只能用于创建新记录。

但是,假设有人正在创建新记录,并且他们错误地选择了错误的 FK。他们如何纠正这一点?您可以使用 VBA 在第一个实例中生成一个确认对话框,也许还有一个撤消按钮,VBA 会故意执行撤消。Access 2010 还具有数据宏(相当于触发器),当用户更改 FK 值时,您可以使用这些数据宏来存储旧值和新值以及其他信息。

Access 没有实现用户级别的安全性,因此用户仍然可以打开和更改原始数据表中的数据。但是,您应该在表连接上强制执行参照完整性,以便用户无法输入在相关表中尚未作为 PK 存在的 FK。

总之,您可以向组合框添加额外的列以帮助用户选择正确的项目,并且您可以考虑在将记录保存到数据表之前使用额外的确认对话框(MsgBox)。但是你不能阻止人们犯错误。(强制参照完整性将防止输入无意义的数据。)

第二个问题:组合框(或可能是列表框)是用户输入 FK 值的最简单方法,无需依赖内存。另一种方法是使用打开辅助表单的按钮(或其他控件和事件)。此表单可能具有一些过滤功能来帮助用户找到正确的 FK 值。当这个表单关闭时,您需要编写一些代码来更新主表单上的相关控件。

于 2013-08-12T16:45:26.933 回答
0

回覆。#1

在 Access 2010 中,您可以使用触发器来检查该值是否已在另一个表中用作 FK,并且不允许更改。在以前的版本中,您所能做的就是隐藏导航窗格或隐藏表格。

回覆。#2

您可以使用 a listbox(与 a 基本相同的想法combobox)。您可以在基础查询中包含查找表,但是值更改的危险更大,这正是您在第一个问题中担心的问题。

坚持下去combobox

于 2013-08-12T13:11:14.873 回答