使用联合查询将多个查询合并到单个结果中

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

有时您可能希望将一个表或查询中的记录与其他一个或多个表中的记录合并为一个结果。 这就是联合查询在 Access 中的作用。

为有效地理解联合查询,应该首先熟悉在 Access 中设计基本的选择查询。 要了解有关设计选择查询的详细信息,请参阅创建简单的选择查询。

研究工作联合查询实例

如果你以前从未创建过联合查询,那么首先研究 Northwind Access 模板中的工作示例可能会有所帮助。 可在 Access 的入门页面上选择“新建文件>”来搜索 Northwind 示例模板。 还可以直接从 Northwind 示例模板下载副本。

Access 打开 Northwind 数据库后,关闭首次出现的登录对话框,然后展开导航窗格。 选择导航窗格顶部,然后选择 “对象类型 ”以按类型组织所有数据库对象。 接下来,展开 “查询” 组,你将看到一个名为 “产品交易”的查询。

联合查询很容易与其他查询对象区分开来,因为它们有一个特殊图标,该图标类似于两个交织的圆圈,表示来自两个集合的交集:

Access 中联合查询图标的屏幕截图。 与普通的选择和操作查询不同,联合查询中的表不相关。 这意味着您不能使用 Access 图形查询设计器来生成或编辑联合查询。 如果从导航窗格打开联合查询,Access 将打开该查询并在数据表视图中显示结果。 在“开始”选项卡上的“视图”下,请注意,使用联合查询时,“设计视图”不可用。 只能在 数据表视图 和 SQL 视图之间切换。

要继续学习此联合查询示例,请单击 主页>视图>SQL 视图 以查看 SQL 定义它的语法。 在此图中,我们在 中 SQL 添加了一些额外的空格,以便你可以轻松查看构成联合查询的各个部分。

让我们详细看看 SQL 来自 Northwind 数据库的这个联合查询的语法:


SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

该 SQL 语句的第一部分和第三部分实际上是两个选择查询。 这些查询会检索两组不同的记录;一个来自“产品订单数”表,另一个来自“产品采购数”表。

此SQL语句的第二部分是UNION关键字 (keyword) ,它指示 Access 将这两组记录合并在一起。

此 SQL 语句的最后一部分使用语句确定 ORDER BY 合并记录的顺序。 在此示例中,Access 按“订单日期”字段降序对所有记录进行排序。

注意

在 Access 中,联合查询始终为只读;不能更改数据表视图中的任何值。

通过创建和合并选择查询来创建联合查询

即使您可以通过直接在 SQL View 中编写SQL语法来创建联合查询,您可能会发现使用选择查询将其分成部分构建更容易。 然后,可以将 SQL 部分复制并粘贴到合并的联合查询中。

如果想要跳过阅读步骤并改为观看示例,请参阅下一节:观看构建联合查询的示例。

  1. 在“创建”选项卡上的“查询”组中,单击“查询设计”。
  2. 双击包含要包含字段的表。 这会将该表添加到查询设计窗口。
  3. 在查询设计窗口中,双击要包括的每个字段。 选择字段时,请确保您在其他选择查询中以相同顺序添加了相同数目的字段。 另外,请注意各个字段的数据类型,确保在要合并的其他查询中,处于相应位置的字段具有兼容的数据类型。 例如,如果第一个选择查询具有五个字段,且第一个字段包含“日期/时间”数据,请确保要合并的其他每个选择查询也具有五个字段,并且第一个字段同样包含“日期/时间”数据,依此类推。
  4. 另外,你还可以在字段网格的“条件”行中键入适当的表达式,从而向字段中添加条件。
  5. 添加完字段和字段条件后,应运行选择查询并查看其输出。 在“设计”选项卡上的“结果”组中,单击“运行”。
  6. 将查询切换到“设计”视图。
  7. 保存该选择查询,但不要将其关闭。
  8. 对于要合并的每个选择查询,请重复此过程。

创建选择查询后,可以组合它们了。 在此步骤中,通过复制和粘贴 SQL 语句来创建联合查询。

  1. 在“创建”选项卡上的“查询”组中,单击“查询设计”。
  2. 在“设计”选项卡的“查询”组中,单击“联合”。 Access 会隐藏查询设计窗口,并显示“ SQL 视图 对象”选项卡。此时,选项卡为空。
  3. 单击要合并在联合查询中的第一个选择查询的选项卡。
  4. 在 “开始 ”选项卡上,单击 “查看>SQL 视图”。
  5. 复制 SQL 选择查询的语句。 单击之前开始创建的联合查询的选项卡。
  6. 将 SQL 选择查询的语句粘贴到联合查询的“ SQL 视图 对象”选项卡中。
  7. 删除 select query SQL 语句末尾的分号 (;) 。
  8. 按 Enter 将光标向下移动一行,然后在新行上键入 UNION 。
  9. 单击要合并到联合查询中的下一个选择查询的选项卡。
  10. 重复步骤 5 到 10,直到将选定查询的所有语句复制并粘贴 SQL 到联合查询的 SQL 视图 窗口中。 请勿删除分号或在上一个选择查询的语句后面 SQL 键入任何内容。
  11. 在“设计”选项卡上的“结果”组中,单击“运行”。

联合查询的结果将显示在“数据表”视图中。

观看构建联合查询的示例

下面是一个可以在 Northwind 示例数据库中重新创建的示例。 此联合查询收集“客户”表中的人员姓名,并将他们与“供应商”表中的人员姓名合并起来。 如果想要按本说明操作,请在 Northwind 示例数据库的副本中完成这些步骤。

以下是构建此示例的所需步骤:

  1. 分别使用“客户”和“供应商”表作为数据源创建两个名为 Query1 和 Query2 的选择查询。 使用“名字”和“姓氏”字段作为显示值。

  2. 创建一个名为 Query3 且最初没有数据源的新查询,然后单击“设计”选项卡上的“联合”命令,以将此查询转换为联合查询。

  3. 将 Query1 和 Query2 中的 SQL 语句复制并粘贴到 Query3 中。 请务必删除多余的分号并添加UNION关键字 (keyword) 。 然后,你可以在数据表视图中查看结果。

  4. 向其中一个查询添加 ordering 子句,然后将该 ORDER BY 语句粘贴到 SQL 视图中的联合查询中。 请注意,在即将追加排序时,Query3 中的联合查询会首先删除分号,然后从字段名称中删除表名。

  5. 组合和排序此联合查询示例的名称的最后一个 SQL 内容如下:

    SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
    FROM Customers
    
    UNION
    
    SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
    FROM Suppliers
    
    ORDER BY [Last Name], [First Name];
    

如果你非常熟悉编写SQL语法,可以直接在 SQL View 中为联合查询编写自己的SQL语句。 但是,你可能会发现采用从其他查询对象复制和粘贴 SQL 的方法很有用。 每个查询都可能比此处使用的简单选择查询示例复杂得多。 将查询合并到联合查询之前,仔细创建和测试每个查询可能对你有利。 如果联合查询无法运行,则可以单独调整每个查询,直到成功运行,然后使用更正的语法重新构建联合查询。

查看本文的其余部分,了解关于使用联合查询的更多提示和技巧。

在联合查询中合并三个或更多表或查询

在上一节中使用 Northwind 数据库的示例中,仅合并了两个表中的数据。 但是,你可以在联合查询中轻松合并三个或更多表格。 例如,基于前面的示例,你可能还希望在查询输出中包含员工的姓名。 你可以通过添加第三个查询,并使用其他 UNION 关键字与之前的 SQL 语句合并来完成该任务,如下所示:


SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT Employees.Company, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

在数据表视图中查看结果时,所有员工都将与示例公司名称一起列出,这可能不是很有用。 如果您希望该字段显示某人是内部员工、供应商还是客户,可以包含 固定值 ,而不是公司名称。 SQL如下所示:


SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT "Supplier" As Employment, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT "In-house" As Employment, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

结果在数据表视图中的显示方式如下。 Access 显示以下五个示例记录:

就业 姓氏 名字
内部 Freehafer Nancy
内部 Giussani Laura
供应商 Glasson Stuart
客户 Goldschmidt Daniel
客户 Gratacos Solsona Antonio

可以进一步减少查询,因为 Access 仅从联合查询中的第一个查询读取输出字段的名称。 此处删除了第二个和第三个查询部分的输出:


SELECT "Customer" As Employment, [Last Name], [First Name]
FROM Customers

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers

UNION

SELECT "In-house", [Last Name], [First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

联合查询中的筛选

在 Access 联合查询中,只允许排序一次,但你可以单独筛选每个查询。 基于上一节的联合查询,下面是一个通过添加 WHERE 子句筛选每个查询的示例。


SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers
WHERE [State/Province] = "UT"

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers
WHERE [Job Title] = "Sales Manager"

UNION

SELECT "In-house", Employees.[Last Name], Employees.[First Name]
FROM Employees
WHERE City = "Seattle"

ORDER BY [Last Name], [First Name];

切换到数据表视图,会看到以下类似结果:

就业 姓氏 名字
供应商 Andersen Elizabeth A.
内部 Freehafer Nancy
客户 Hasselberg Jonas
内部 Hellung Larsen Anne
供应商 Hernandez-Echevarria Amaya
客户 Mortensen Sven
供应商 Sandberg Mikael
供应商 夏 蘅
内部 Thorpe Steven
供应商 Weiler Cornelia
内部 Zare Robert

混合数据类型

如果联合的查询非常不同,则可能会遇到输出字段必须组合不同数据类型的数据的情况。 如果是这种情况,联合查询通常会将结果作为文本数据类型返回,因为该数据类型可以同时包含文本和数字。

为了解其工作原理,我们将使用 Northwind 示例数据库中的产品事务联合查询。 打开该示例数据库,然后在数据表视图中打开产品事务查询。 最后十条记录应该与以下输出类似:

产品 ID 订单日期 公司名称 交易记录 数量
77 2006/1/22 供应商 B 购买 60
80 2006/1/22 供应商 D 购买 75
81 2006/1/22 供应商 A 购买 125
81 2006/1/22 供应商 A 购买 200
7 2006/1/20 公司 D 销售 10
51 2006/1/20 公司 D 销售 10
80 2006/1/20 公司 D 销售 10
34 2006/1/15 公司 AA 销售 100
80 2006/1/15 公司 AA 销售 30

假设您要将 Quantity 字段拆分为两个字段:Buy 和 Sell。 我们还假设希望没有值的字段有一个固定的零值。 下面是 SQL 此联合查询的外观:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], 0 As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, 0 As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

如果切换到数据表视图,你将看到最后十条记录现在显示如下:

产品 ID 订单日期 公司名称 交易记录 购买 销售
74 2006/1/22 供应商 B 购买 20 0
77 2006/1/22 供应商 B 购买 60 0
80 2006/1/22 供应商 D 购买 75 0
81 2006/1/22 供应商 A 购买 125 0
81 2006/1/22 供应商 A 购买 200 0
7 2006/1/20 公司 D 销售 0 10
51 2006/1/20 公司 D 销售 0 10
80 2006/1/20 公司 D 销售 0 10
34 2006/1/15 公司 AA 销售 0 100
80 2006/1/15 公司 AA 销售 0 30

继续此示例,如果您希望值为零的字段为空,该怎么办? 可以通过添加Null关键字 (keyword) 修改为SQL不显示任何内容,而不是零,如下所示:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

但是,如你所见切换到数据表视图,现在有一个意外的结果。 在“购买”列中,每个字段都被清除了:

产品 ID 订单日期 公司名称 交易记录 购买 销售
74 2006/1/22 供应商 B 购买
77 2006/1/22 供应商 B 购买
80 2006/1/22 供应商 D 购买
81 2006/1/22 供应商 A 购买
81 2006/1/22 供应商 A 购买
7 2006/1/20 公司 D 销售 10
51 2006/1/20 公司 D 销售 10
80 2006/1/20 公司 D 销售 10
34 2006/1/15 公司 AA 销售 100
80 2006/1/15 公司 AA 销售 30

发生这种情况是因为 Access 会决定第一个查询中字段的数据类型。 在此示例中,Null 不是数字。

那么,如果您尝试为字段的空白值插入空字符串,会发生什么情况? SQL对于此尝试,可能如下所示:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], "" As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, "" As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

当切换到数据表视图时,会看到 Access 检索“购买”值,但它会将值转换为文本。 可以看出这些是文本值,因为它们在数据表视图中是左对齐的。 第一个查询中的空字符串不是数字,这就是看到这些结果的原因。 此外还会发现,由于购买记录包含空字符串,“销售”值也会转换为文本。

产品 ID 订单日期 公司名称 交易记录 购买 销售
74 2006/1/22 供应商 B 购买 20
77 2006/1/22 供应商 B 购买 60
80 2006/1/22 供应商 D 购买 75
81 2006/1/22 供应商 A 购买 125
81 2006/1/22 供应商 A 购买 200
7 2006/1/20 公司 D 销售 10
51 2006/1/20 公司 D 销售 10
80 2006/1/20 公司 D 销售 10
34 2006/1/15 公司 AA 销售 100
80 2006/1/15 公司 AA 销售 30

那么如何解决此难题?

一种解决方案是强制查询预期字段值为数字。 可使用以下表达式执行此操作:


IIf(False, 0, Null)

要检查False的条件 ,从不 True,因此表达式始终返回Null。 但是,Access 仍会计算这两个输出选项,并将输出视为数字或 Null。

以下是在我们的工作示例中使用此表达式的方法:


SELECT [Product ID], [Order Date], [Company Name], [Transaction], IIf(False, 0, Null) As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

无需修改第二个查询。

如果切换到数据表视图,现在将看到我们希望的结果:

产品 ID 订单日期 公司名称 交易记录 购买 销售
74 2006/1/22 供应商 B 购买 20
77 2006/1/22 供应商 B 购买 60
80 2006/1/22 供应商 D 购买 75
81 2006/1/22 供应商 A 购买 125
81 2006/1/22 供应商 A 购买 200
7 2006/1/20 公司 D 销售 10
51 2006/1/20 公司 D 销售 10
80 2006/1/20 公司 D 销售 10
34 2006/1/15 公司 AA 销售 100
80 2006/1/15 公司 AA 销售 30

实现相同效果的另一种方法是使用另一个查询在联合查询的前面预置这些查询:

SELECT
  0 As [Product ID], Date() As [Order Date],
  "" As [Company Name], "" As [Transaction],
  0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

对于每个字段,Access 会返回你定义的数据类型的固定值。 当然,你不希望此查询的输出干扰结果,所以避免此情况的技巧是包含一个结果为 False 的 WHERE 子句:

WHERE False

这是一个小技巧。 由于条件始终为 false,因此查询不会返回任何内容。 合并此语句和现有的 SQL,我们得到一个完整的语句,如下所示:

SELECT
  0 As [Product ID], Date() As [Order Date],
  "" As [Company Name], "" As [Transaction],
  0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

UNION

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

注意

在此示例中,Northwind 数据库中的组合查询返回 100 条记录,而两个单独的查询返回 58 和 43 条记录,总共 101 条记录。 出现这种差异是因为两个记录不唯一。 请参阅 使用联合 ALL 处理联合查询中的不同记录 ,了解如何使用 UNION ALL.

在联合查询中添加总计

联合查询的一个特殊用途是将一组记录与包含一个或多个字段之和的记录合并在一起。

以下是可以在 Northwind 示例数据库中创建的另一个示例,以说明如何在联合查询中获取总数。

  1. 使用以下 SQL 语法创建新的简单查询来查看啤酒的购买情况(在 Northwind 数据库中,产品 ID 为 34):

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
    
  2. 切换到数据表视图,应该看到四个购买:

    接收日期 数量
    2006/1/22 100
    2006/1/22 60
    2006/4/4 50
    2006/4/5 300
  3. 要获得总数,请使用以下 SQL 创建简单的聚合查询:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
  4. 切换到数据表视图,应该只看到一条记录:

    接收日期的最大值 数量总和
    2006/4/5 510
  5. 将这两个查询合并到一个联合查询中,以将具有总数量的记录附加到采购记录:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    UNION
    
    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
    
  6. 切换到数据表视图,应该看到四个购买,分别显示各自的总和后跟数量总计记录。

    接收日期 数量
    2006/1/22 60
    2006/1/22 100
    2006/4/4 50
    2006/4/5 300
    2006/4/5 510

这包含将总计添加到联合查询中的基础知识。 你可能还需要在这两个查询中包含固定值,例如“详细信息”和“总计”,以直观地将总记录与其他记录分开。 你可以参阅在合并查询中合并三个或更多表或查询部分了解如何使用固定值。

使用 UNION ALL 处理联合查询中的不同记录

默认情况下,Access 中的联合查询只包含不同的记录。 但如果想要包含所有记录呢? 此处另一个示例可能很有用。

在上一部分,我们向你展示了如何在联合查询中创建总计。 修改该联合查询 SQL 以包含 Product ID = 48:


SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION

SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Purchase Order Details].[Date Received];

切换到数据表视图,应该看到一个稍有误导性的结果:

接收日期 数量
2006/1/22 100
2006/1/22 200

当然,一条记录不会返回总数量的两倍。

之所以会看到此结果,是因为在某一天,相同数量的巧克力已售出两次,如“采购订单详细信息”表中所记录的那样。 以下是 Northwind 示例数据库中显示两条记录的简单选择查询结果:

采购订单 ID 产品 数量
100 Northwind Traders 巧克力 100
92 Northwind Traders 巧克力 100

在前面提到的联合查询中,你可以看到不包括采购订单 ID 字段,并且这两个字段不构成两个不同的记录。

如果要包括所有记录,请使用 UNION ALL 而不是UNIONSQL在 . 这很可能会影响结果的排序,因此您可能还需要包含一个 ORDER BY 子句来确定排序顺序。 下面是基于前面的示例进行修改 SQL 的:


SELECT [Purchase Order Details].[Date Received], Null As [Total], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION ALL

SELECT Max([Date Received]), "Total" As [Total], Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Total];

切换到数据表视图,应该看到所有详细信息以及总计(最后一条记录):

接收日期 总计 数量
2006/1/22 100
2006/1/22 100
2006/1/22 总计 200

使用联合查询通过组合框控件筛选表单上的记录

联合查询的常见用法是作为表单上组合框控件的记录源。 可以使用该组合框来选择一个值,以筛选表单的记录。 例如,按员工的城市筛选员工记录。

要了解其工作原理,可以在 Northwind 示例数据库中创建另一个示例来说明这种情况。

  1. 使用以下 SQL 语法创建简单的选择查询:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
    
  2. 切换到数据表视图,应该看到以下结果:

    城市 筛选器
    西雅图 西雅图
    贝尔维尤 贝尔维尤
    雷德蒙德 雷德蒙德
    柯克兰 柯克兰
    西雅图 西雅图
    雷德蒙德 雷德蒙德
    西雅图 西雅图
    雷德蒙德 雷德蒙德
    西雅图 西雅图
  3. 光从这些结果你可能看不到太多价值。 但是,请展开查询,并使用以下 SQL内容将其转换为联合查询:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
    
  4. 切换到数据表视图,应该看到以下结果:

    城市 筛选器
    <全部> *
    贝尔维尤 贝尔维尤
    柯克兰 柯克兰
    雷德蒙德 雷德蒙德
    西雅图 西雅图

    Access 执行上述 9 条记录的联合,其中固定字段值 <为 All> 和“*”。 由于此 union 子句不包含 UNION ALL,Access 仅返回不同的记录。 这意味着每个城市仅返回一次具有固定相同值的城市。

  5. 现在,你已拥有一个城市名称仅显示一次的完整联合查询,以及一个可以有效选择所有城市的选项,你可以将此查询用作表单上组合框的记录源。 使用此特定示例作为模型,可以在表单上创建组合框控件,将此查询设置为其记录源,将“筛选”列的“列宽”属性设置为 0(零)以在视觉上隐藏它,然后将“绑定列”属性设置为 1 以指示第二列的索引。 然后,在窗体本身的属性中 Filter ,您可以添加如下所示的代码,以使用组合框控件中选择的值激活窗体筛选器:

    Me.Filter = "[City] Like '" & Me![FilterComboBoxName].Value & "'"
    Me.FilterOn = True
    

    然后,窗体用户可以将窗体记录筛选为特定城市名称,或选择“全部>”<以列出所有城市的所有记录。

返回页首