Access 2010:根据特定组合框条件过滤字段中包含多个值的报表
Posted
技术标签:
【中文标题】Access 2010:根据特定组合框条件过滤字段中包含多个值的报表【英文标题】:Access 2010: Filter a Report with multiple values in field based on specific combo box criteria 【发布时间】:2014-06-17 14:56:13 【问题描述】:我对 Access 还很陌生,所以如果这是非常基本的东西,我深表歉意。我有一个包含不同公司及其产品信息的表的数据库。用户可以基于下拉复选框列表在“产品”字段中输入多个产品。例如,我可以在“公司名称”字段中有一家公司的名称,然后在“产品”字段中最多可以有四种产品“玩具、家用电器、家具、清洁用品”。
我创建了一份报告来按产品生成公司列表。用户打开一个表单,他们可以在其中从下拉列表中选择一个产品,然后点击 go。理想情况下,生成的报告包含生产该产品的所有供应商。但是,我的问题是,如果一家公司生产多种产品,则过滤器不包括该公司,因为它与指定的标准不完全匹配。
基本上,我正在寻找某种方法来告诉报告过滤所有公司,如果它包含特定产品,而不仅仅是等于该产品。我不知道该怎么做。我希望这是有道理的,任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:您需要有两张桌子(实际上可能是三张;我会选择三张)。
公司表 公司信息:姓名、地址、电话号码等,加上一个 ID 字段,该字段将为整数、Auto(由 Access 自动分配),并将作为主键。
产品类型表 如果您的产品类型(玩具等)列出。将包含根据 Customer 表中的 ID 定义的 ID。
客户产品表 这也将具有与其他两个相同的 ID。它还将有两个 int 字段:CustomerID 和 ProductTypeID。这些将包含 Customer 和 ProductType 表中 ID 列的值。这些将被定义为外键:访问将不允许您放置例如10 在 ProductTypeID 中,除非 ProductType 具有 ID 为 10 的行。这称为参照完整性,有助于确保您的数据是一致的。
您还可以在 CustomerID 和 ProductID 上创建唯一索引(两个字段上的一个索引)。这将确保您不会在数据库中两次获得相同的 ProductType/Customer 组合。
查询 您现在可以将 ProductType 中的行用于包含产品类型的下拉菜单。如果您需要添加一个,您只需在 ProductType 表中添加一行,代码就会选择它。 要获取携带 ProductType 的客户列表,您需要在 Customer 和 CustomerProduct 之间进行连接。比如:
select *
from Customer c
inner join CustomerProduct p on p.CustomerID = c.ID
where p.ProductTypeID = 10
(假设他们要查找的产品类型的 ID 为 10)。
这实际上是正确的方法。您的方式 - 在一个客户行上有多个 ProductTypes - 使事情变得有点棘手。有一种方法可以解决您当前的问题,但我不会去那里,因为这种类型的设计虽然不是一个不寻常的初学者错误,但会在以后导致可怕的问题。从一开始就正确地做。
【讨论】:
非常感谢!那效果很好。我想这一定是某种设计问题。再次感谢!以上是关于Access 2010:根据特定组合框条件过滤字段中包含多个值的报表的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2010 - 如何根据以前的输入以编程方式显示表单字段?