Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用combobox输入外键有多安全_Ms Access_Combobox_Foreign Keys - Fatal编程技术网

Ms access 使用combobox输入外键有多安全

Ms access 使用combobox输入外键有多安全,ms-access,combobox,foreign-keys,Ms Access,Combobox,Foreign Keys,在相关表中,需要输入FK链接到父表。 你可以从记忆中输入FG!!!!!!或者使用帮助。 标准过程是将字段设计为组合框,并使用SQL选择有助于输入父表ID的字段。因此,如果您想输入外键3,组合框将显示3,然后当您选择Access时,将为您插入3 我的问题是,因为我以后可以编辑表格,将值更改为另一个值,然后把整个事情搞砸!!!如何锁定我的第一选择,使其保持未编辑状态 我的第二个问题是:如果您不记得确切的ID号,或者父表中有数千条记录,那么这是输入FK的唯一方法吗。一, 在Access 2010中,您

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

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

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

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

Re。二,

您可以使用一个列表框,其基本思想与组合框相同。 您可以在基础查询中包含查找表,但是值被更改的风险更大,这正是您在第一个问题中所担心的


坚持使用组合框。

您可以创建表单的不同版本。一个可能有允许编辑,否,另一个可能是数据输入,是,这意味着它只能用于创建新记录

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

Access不实现用户级安全,因此用户仍然可以打开和更改原始数据表中的数据。但是,您应该在表联接上强制引用完整性,以便用户不能输入在相关表中尚未作为PK存在的FK

总之,您可以向组合框中添加其他列,以帮助用户选择正确的项,并且可以在记录被保存到数据表之前考虑一个附加确认对话框MSGBOX。但是你不能阻止人们犯错误。强制引用完整性将防止输入无意义的数据

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