Many to many MS Access 2007主子窗体设计

Many to many MS Access 2007主子窗体设计,many-to-many,ms-access-2007,master-detail,form-design,Many To Many,Ms Access 2007,Master Detail,Form Design,我需要一些关于如何为以下场景构造一些MS Access 2007表单的建议 我的表格结构如下: 产品 ++++++ ID(主键) 产品名称 ... 标签 ++++ ID(主键) 标记名 ProductTag +++++++++++ ProductID(fk) TagID(fk) 我希望有一个主表单,允许我搜索并显示符合该标准的所有产品(以及每个产品的十几个属性)的列表(我认为是产品的连续表单视图) 到目前为止还不错。没问题 现在,我想在我的连续表单产品列表的右侧添加一个“标记”表单,该表单链

我需要一些关于如何为以下场景构造一些MS Access 2007表单的建议

我的表格结构如下:

产品
++++++
ID(主键)
产品名称
...

标签
++++
ID(主键)
标记名

ProductTag
+++++++++++
ProductID(fk)
TagID(fk)

我希望有一个主表单,允许我搜索并显示符合该标准的所有产品(以及每个产品的十几个属性)的列表(我认为是产品的连续表单视图)

到目前为止还不错。没问题

现在,我想在我的连续表单产品列表的右侧添加一个“标记”表单,该表单链接到当前有焦点的产品。标记面板应始终显示所有标记的完整列表。我希望在每个标签旁边都有一个复选框,可以打开和关闭该标签是否适用于当前选定的产品。我还希望能够动态添加标记(而不离开主窗体)

我想我有三种形式在发挥作用,但这就是我需要一些建议的地方:
-主窗体
-产品表单(主表单的子表单)我的产品搜索条件可能在此表单标题上。
-标记窗体(也是主窗体的子窗体)

但是使用这种方法,我很难将两个子表单相互链接。实际上,我很难弄清楚如何使用复选框显示所有标记的列表,当选中该复选框时,会在ProductTag表中创建/删除一条记录,我真的希望Access尽可能多地处理CRUD。我更愿意避免在事件上编写SQL插入/删除语句。我对访问权限要求太高了吗


如果你能帮忙,我将不胜感激。如果在您的回复中,您可以讨论我应该关注的RecordSource和主/子链接字段和/或事件触发器,这将是一个很大的帮助。

首先,我认为使用复选框是不可能的,因为我认为未绑定的复选框不会以连续形式工作

我的解决办法如下。我把它作为产品表单的子表单使用,但还有其他方法

首先在ProductTag表上创建一个查询“qryProductTags”,该查询选择与产品表单中当前选择的产品匹配的所有记录

然后创建第二个查询标记表left outer join(Access中的连接类型2)qryProductTags。在该查询的输出中包括TagID、TagName和fkProductID

此查询现在应选择标记选项卡中的所有记录,如果当前产品的ProductTags表中存在标记,则将显示ProductID,否则此字段将为空

使用第二个查询作为标记子窗体的记录源。然后附加一个事件(双击标记名)以运行查询,以根据标记列表中fkProductID字段的值是否为空,在ProductTag表中插入或删除记录

您可以在标记列表窗体上使用条件格式来显示选定的标记,也可以使用单独的窗体来显示当前产品的标记


我希望这是有道理的。。如果有帮助的话,您可以在这里找到一个“quick n dirty”工作示例,因为我在这里找不到上传文件的方法:

好的解决方案。我有一个硬性的要求,以连续列表的形式显示主表单中的产品,这使得显示有点困难,尤其是当用户还需要能够同时将标签应用于多个产品时。你付出了很大的努力,谢谢你的时间。