通过表单从 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 反对,因为组合框的 .Value
是 Null
,并且您在联结表上的主键禁止 [model_id] 的 Null
值。
【讨论】:
【参考方案2】:为了其他人的利益,回顾一下:
一个选项(可能对用户来说更直观)是在您的子表单中添加一个删除按钮。在“设计”视图中打开子窗体并从“控件”面板中添加一个按钮,并打开控件向导。命令按钮向导应该打开 - 从类别列表中选择“记录操作”,从操作列表中选择“删除记录”。向导的其余部分将自定义按钮的外观和名称。
我正在使用类似的表格,每一行看起来像这样,(X)是组合框后面的一个小删除按钮:
福特平托 (X)
如果删除很重要,我认为按钮是一种比单击“记录选择器”并按下删除键更明显的方法。
【讨论】:
谢谢 - 很快就会再次在这个数据库上工作,看看效果如何。以上是关于通过表单从 Access 联结表中删除行的主要内容,如果未能解决你的问题,请参考以下文章