0

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

我的表结构如下:

产品
++++++
ID (pk)
产品名称
...

标签
++++
ID (pk)
标签 名

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

我想要一个主表单,允许我搜索并显示满足该条件的所有产品(以及每个产品的十几个属性)的列表(我正在考虑产品的连续表单视图)。

到目前为止,一切都很好。没问题。

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

我想我有三个表格在起作用,但这是我需要一些建议的地方: -
主表格
-产品表格(主表格的子表格) 我的产品搜索条件可能在这个表格标题上。
-Tag 表单(也是 Main 的子表单)

但是使用这种方法,我无法将两个子表单相互链接。实际上,我很难弄清楚如何使用复选框显示所有标签列表可能的。我宁愿避免在事件上编写 SQL INSERTS/DELETES 的长篇大论。我对 Access 的要求太多了吗?

如果您能提供帮助,将不胜感激。如果在您的回复中您可以讨论我应该关注哪些 RecordSource 和 Master/Child Link 字段和/或事件触发器,那将是一个很大的帮助。

4

1 回答 1

1

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

我的解决方案如下。作为 Product 表单的子表单,我将它与 TagList 表单一起使用,但还有其他方法。

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

然后创建第二个查询 - 标记表左外连接(Access 中的连接类型 2)qryProductTags。在此查询的输出中包含 TagID、TagName 和 fkProductID

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

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

您可以在 TagList 表单上使用条件格式来显示选定的标签,或者使用单独的表单来显示当前产品的标签。

我希望这是有道理的。如果有帮助,您可以在这里找到一个“快速而肮脏”的工作示例,因为我在这里看不到上传文件的方法:https ://drive.google.com/folderview?id= 0B0J_JolN6f8GOXpKVVZJTHVJTWM&usp=分享

于 2013-10-22T10:51:40.083 回答