通过链接到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以多对多关系插入数据(中间表)的主要内容,如果未能解决你的问题,请参考以下文章
将 MS SQL Server 图像数据移动到 MySQL longblob
MS Access:来自 SQL Server 的只读链接表?
将多用户环境中的表中的 ms 访问数据附加到 sql server 表中
SQL Server 在链接的 MS Access 表上插入后返回不同的记录
重新定义 MS Access 文件和 SQL Server 之间的数据链接
(转) java 通过 jdbc 链接 ms sql server 中出现 "no suitable driver for ..."