【问题标题】:MS Access 2007 Master Child Form DesignMS Access 2007 主子窗体设计
【发布时间】:2013-10-22 18:08:36
【问题描述】:

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

我的表结构如下:

产品
++++++
身份证 (pk)
产品名称
...

标签
++++
身份证 (pk)
标签名

产品标签
+++++++++++++
产品 ID (fk)
标签ID (fk)

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

到目前为止一切顺利。没问题。

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

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

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

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

【问题讨论】:

    标签: many-to-many ms-access-2007 master-detail


    【解决方案1】:

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

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

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

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

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

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

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

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

    【讨论】:

    • 很好的解决方案。我有一个严格而快速的要求,将主表单中的产品显示为连续列表,这使得它有点困难,特别是因为用户还需要能够同时将标签应用于多个产品。你付出了很多努力,所以感谢你的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多