通过表单从 Access 联结表中删除行

Posted

技术标签:

【中文标题】通过表单从 Access 联结表中删除行【英文标题】:Delete row from Access junction table via form 【发布时间】:2013-05-13 21:32:12 【问题描述】:

我设置了一个子表单listing stored values from a junction and lookup table。这部分运行良好(我可以查看所有存储的条目或添加新条目)。

这是我的人际关系:

这是我的表单布局,显示了我尝试删除以前保存的关联的位置。如果我只是删除表单中行的内容,当我尝试保存记录时,Access 会返回:index or primary key cannot contain null value

从控制台删除一行的 SQL 很简单:

DELETE FROM junction_model WHERE cust_id = X AND model_id = Y

事实证明,从表单中删除一行并不那么简单。

有没有一种相对简单的方法可以从表单本身做到这一点?

【问题讨论】:

【参考方案1】:

组合框左侧的那些小方块(其中一个带有“铅笔”图标,表示脏记录)是“记录选择器”。单击记录选择器将选择记录,然后如果您点击 Delete,该记录将被删除。

看起来您刚刚删除了组合框的内容。当您保存(仍然存在的)记录时,Access 反对,因为组合框的 .ValueNull,并且您在联结表上的主键禁止 [model_id] 的 Null 值。

【讨论】:

【参考方案2】:

为了其他人的利益,回顾一下:

一个选项(可能对用户来说更直观)是在您的子表单中添加一个删除按钮。在“设计”视图中打开子窗体并从“控件”面板中添加一个按钮,并打开控件向导。命令按钮向导应该打开 - 从类别列表中选择“记录操作”,从操作列表中选择“删除记录”。向导的其余部分将自定义按钮的外观和名称。

我正在使用类似的表格,每一行看起来像这样,(X)是组合框后面的一个小删除按钮:


福特平托 (X)


如果删除很重要,我认为按钮是一种比单击“记录选择器”并按下删除键更明显的方法。

【讨论】:

谢谢 - 很快就会再次在这个数据库上工作,看看效果如何。

以上是关于通过表单从 Access 联结表中删除行的主要内容,如果未能解决你的问题,请参考以下文章

如果用户从表中删除记录,则刷新 Access 表单文本框

sqlalchemy:从联结表中删除项目

无法通过 C# 中的 OleDB 从 Microsoft Access 中删除表的所有行

Spring:如何从联结表中删除条目?

通过匹配链接表中的值来填充联结表

从 2 个联结表中提取数据的查询