首页 > 解决方案 > 通过链接到 SQL 服务器数据库的 MS Access 以多对多关系(中间表)插入数据

问题描述

我有一个联系人数据库,在 SQL 服务器上创建。其多对多关系的示例如下:

1- Contact table (ContactID, Fname, Lname, ...)
2-Contact_Skill table (ContactID, SkillID, Score)
3-Skill table (SkillID, Skill_name, Skill_type)

为了更容易交互,我将此数据库与 MS 访问文件(这将是用户使用的界面)链接起来。用户主要使用它进行插入,我在其他地方有一个 SQL 报表服务器来检索一些数据并做一些报告。

我现在的问题是,我试图找到一种更简单的方法(无需编程)在中间表(Contact_Skill)中插入数据,而不是手动获取 ID。类似于下拉菜单的东西,使用户能够选择技能并将其变成其 ID。任何更简单的方法也会受到欢迎。谢谢

标签: sql-serverms-access

解决方案


好的,您可能不需要代码,或者至少不需要很少的代码,而且您当然不必编写代码来插入记录。

所以,我会创建表单(直接绑定到链接的联系人表。

因此,您可以使用 ctrl-f 或其他任何方式来搜索、查找、跳转到您要编辑的记录。(所以现在内置的搜索功能就足够了)。

在该表格中,您将放入一个子表格。(续表 - 多个项目在这里会很好用。

所以,在那种形式中,你有这个:

在此示例中,我有客户发票发票详细信息

所以,真的,我有类似的设置。一个主表(客户)然后是发票的子表。

然后对于每张发票,我们都有发票的详细信息。

因此,您的主表单将包含显示联系技巧的子表单。

就我而言,我有这个:

在此处输入图像描述

因此,为此,您并没有真正编写任何代码。

现在,请注意每张发票(或您的联系技巧)。

请注意我如何在该继续表单中有一个编辑按钮。

这允许我们“向下钻取”。

这个按钮后面的代码是:

if me.Dirty = true, then me.Dirty = False
docmd.OpenForm "frmInvoice",,,"ID = " & me!id

因此,单击编辑将根据发票(或您的案例技能)ONE 记录启动一个新的“主”表单。

现在对于该技能记录,不清楚您是否还有另一个向下钻取(子表),但假设您有!

因此,在该表格中,您只需放入另一个子表格(再次继续项目),因此您现在可以自由地为该联系技能添加更多技能。

就我而言,它是发票详细信息,所以我们有这个:

在此处输入图像描述

上面的屏幕相当粗糙(它们是测试场景),但它显示了一个处理 3 个典型相关表的设计。

所以整个系统只需要大约 6 行代码。请记住,当您放入子表单以关联子项目时?Access 将设置属于具有一个“主”记录的父表和子记录的子表的外键值。所需要的只是链接主/子设置设置正确。完成后,Access 将管理和设置用于将表相互关联的正确值,您无需为此编写任何 SQL 甚至任何代码。(您可以自由添加子表单记录,然后单击“编辑”按钮以获取更多详细信息以进行编辑,或者如前所述将更多子记录添加到您刚刚启动的表单中。

因此,相关表和子记录的添加在 Access 中是非常自动的,您无需编写代码来添加记录 - 如果您遵循上述设计模式,Access 将为您完成所有这些工作。您必须添加的唯一代码是“编辑”按钮以启动序列中的下一个表单。


推荐阅读