通过链接到SQL Server数据库的MS Access以多对多关系插入数据(中间表)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过链接到SQL Server数据库的MS Access以多对多关系插入数据(中间表)相关的知识,希望对你有一定的参考价值。
我有一个在SQL Server上创建的联系人数据库。下面是其多对多关系的一个示例:
1- Contact table (ContactID, Fname, Lname, ...)
2-Contact_Skill table (ContactID, SkillID, Score)
3-Skill table (SkillID, Skill_name, Skill_type)
[为了简化交互,我将此数据库链接到了MS访问文件(这将是用户使用的界面)。用户主要将其用于插入,而我在其他地方还有一个SQL报表服务器来检索一些数据并生成一些报表。
我现在的问题是,除了手动获取ID之外,我试图找到一种更简单的方法(无需编程)将数据插入中间表(Contact_Skill)。下拉菜单之类的东西,使用户可以选择技能,然后变成其ID。任何更简便的方法也将受到欢迎。谢谢
[好,您可能不需要代码,或者至少需要很少的代码,并且您当然不必编写代码来插入记录。
因此,我将创建表单(直接绑定到链接的联系人表。
因此,您可以使用ctrl-f或其他搜索,查找或跳转到要编辑的记录的方式。 (因此,内置的搜索功能现在就足够了。)>
在该表单中,您将放入子表单。 (一种连续形式-多个项目在这里效果很好。
所以,以这种形式,你有这个:
在这个例子中,我有顾客发票发票明细
所以,实际上,我有几乎相同类型的示例。一个主表(客户)然后是发票子表。
然后是每个发票,都有发票的详细信息。
因此,您的主表单将删除该子表单以显示联系技巧。
就我而言,我有这个:
因此,您实际上并未编写任何代码。
现在,请注意每张发票(或您的联系技能情况)。
请注意我在续表中如何使用编辑按钮。
这可以让我们“深入”。
此按钮后面的代码是:
if me.Dirty = true, then me.Dirty = False docmd.OpenForm "frmInvoice",,,"ID = " & me!id
因此,单击编辑将根据发票(或您的实际情况)的ONE记录启动一个新的“主”表格。
现在有了该技能记录,尚不清楚您是否还有另一个向下钻取(子表),但请假设您已做!
因此,在该表单中,您只需放入另一个子表单(再次是连续项),因此,您现在可以自由地为该联系技能添加更多技能。
在我的情况下,这是发票详细信息,因此我们有:
上面的屏幕相当粗糙(它们是测试场景),但是它显示了一种设计,其中您要处理3个典型的相关表。
因此整个系统使用大约6行代码。只要记住,当您放入子窗体来关联子项时? Access将设置属于具有一个“主”记录和子记录子形式的父表的外键值。所需要的只是链接主/子设置正确设置。完成后,Access将管理并设置用于将表彼此关联的正确值,并且您不必为此编写任何SQL甚至任何代码。 (您可以随意添加子表单记录,然后单击“编辑”按钮以获取更多详细信息进行编辑,或者按照说明将更多的子记录添加到刚启动的该表单中。
所以相关表以及添加子记录在Access中是非常自动的,并且您无需编写代码来添加记录-如果您遵循上述设计模式,则Access将为您完成所有这些工作。关于您必须添加的唯一代码,是“编辑”按钮以启动序列中的下一个表单。
以上是关于通过链接到SQL Server数据库的MS Access以多对多关系插入数据(中间表)的主要内容,如果未能解决你的问题,请参考以下文章