在 Access 中,可以创建一个多值字段,该字段保存多个值 (最多 100) 。 还可以创建查找字段,用于显示绑定到另一个数据源中的值的用户友好值。 查询 Lookup 或多值字段时,有一些独特的注意事项。 有关详细信息,请参阅Create或删除多值字段和Create或删除查阅字段。
本文内容
查看查询中查阅字段的绑定值
默认情况下,“查找”字段的显示值会自动显示在查询数据表视图中。 创建查询时,可以重写此行为,以便改为显示绑定值。 在此示例中,假设你想要在总部表中查看“查找”新英格兰州名称的“查找”字段的绑定值。
-
在 设计视图中打开查询。
-
在此示例中,添加 总部 表和 NewEngland 表。
应联接这两个表。
有关详细信息,请参阅 联接表和查询。
-
将字段与“查阅”字段一起拖动到查询设计网格。 在此示例中,添加 “City ”和 “NEState” 字段。
-
单击“查阅”字段,然后在“ 设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 属性表”。 在此示例中,使用 NEState 字段。
-
在属性表中,选择“ 查找 ”选项卡,然后在“ 显示控件 ”属性中选择“ 文本框”。
结果 现在,在数据表视图中查看查询时,会看到显示值的相应绑定值。
在查询中使用查阅字段的显示值
创建“查找”字段时,将在“绑定”值和“显示”值之间创建联接。 虽然不能在查询中直接使用 Display 值,但可以使用其他数据源中的相应值。 在此示例中,假设你想要在查询的总部表中使用 Lookup 字段 NEState 的显示值作为条件。
-
在 设计视图中打开查询。
-
在此示例中,添加 “总部 ”和 “NewEngland” 表。
应联接这两个表。 有关详细信息,请参阅 联接表和查询。
-
将要使用的字段拖动到查询网格。 在此示例中,将 “City ”从“总部”表拖到第一列,将 “NEState ”从“总部”表拖到第二列,将 “StateName ”从 NewEngland 表拖到第三列。
-
清除查询网格中 StateName 的“显示检查”框。
-
在查询网格的 “StateName”下的“条件”行中,输入 “佛蒙特州”。
查询条件基于 StateName 列,该列当然与显示值 NEState 相同,但不显示在数据表视图中。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 仅显示包含 佛蒙特州的 行。
在查询中使用多值字段
在查询中显示多值字段时,可以显示完整的多值字段,其中包含一行上用逗号分隔的所有值,或者为每个值显示一个单独的行平展数据。 例如,假设你有一个 “问题” 表,其中包含每个问题的 “标题” 字段,以及一个 AssignedTo 多值字段,用于将问题分配给人员。
在一行中显示多值字段中的所有值
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将字段拖动到查询设计网格。 在此示例中,拖动 “标题” 字段和 AssignedTo 多值字段。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 如预期的那样,一列显示 “标题” 字段,第二列显示 AssignedTo 多值字段:
在平展视图 (一行中显示多值字段的每个值)
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将字段拖动到查询网格。 在此示例中,拖动 “标题” 字段和 AssignedTo.Value 多值字段。
格式,<Fieldname>。值,将 Value 属性追加为字符串 。AssignedTo 字段的值。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 数据平展,以便重复 Title 字段,并且 AssignedTo 多值字段中的每个值都显示在相应的行中:
向查询中的多值字段添加条件
同一条件在不同网格列中的查询网格中的位置会对查询结果产生很大影响。
添加在一行中显示多值字段中所有值的条件
Access 首先创建一个结果集,然后添加条件。
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将字段拖动到查询网格。 在此示例中,拖动 “标题 ”字段、 AssignedTo 多值字段和 AssignedTo.Value 多值字段。
-
清除查询网格中 AssignedTo.Value 的“显示检查”框。
-
在查询网格的 “AssignedTo.Value”下的 “条件 ”行中,输入“NOT”David Hamilton”。
查看 SQL 视图很有帮助:
SELECT Title, AssignedTo FROM Issues WHERE NOT AssignedTo.Value = “David Hamilton”;
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 未分配给 David Hamilton 的三个问题显示在默认值中。
添加条件,在平展视图 (一行多值字段中显示每个值)
Access 首先创建平展的结果集,然后添加条件。
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将字段拖动到查询网格。 在此示例中,拖动 “标题” 字段和 AssignedTo.Value 多值字段。
-
在查询网格的 “AssignedTo.Value”下的 “条件 ”行中,输入 NOT“David Hamilton”。
查看 SQL 视图很有帮助:
SELECT Issues.Title, AssignedTo.Value FROM Issues WHERE NOT AssignedTo.Value = “David Hamilton”
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 未分配给 David Hamilton 的每个问题都以平展值显示。
向查询中的多值字段添加多个条件
有时需要在多值字段中搜索多个值的匹配项。 例如,假设你希望看到“Kelly Rollin”和“Lisa Miller”都属于 AssignedTo 字段中的值的问题
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将字段拖动到查询网格。 在此示例中,拖动 “标题” 字段和 AssignedTo 多值字段。
-
在查询网格的 “AssignedTo”下的 “条件 ”行中,输入“Kelly Rollin”和“Lisa Miller”。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 显示分配给“凯莉·罗林”和“丽莎·米勒”的这两个问题。
对查询中的多值字段进行分组和计数
若要对存储在多值字段中的值执行计算、分组和排序,请使用 <Fieldname>。值字段。 有关组查询的详细信息,请参阅 使用查询对数据进行计数。
计算分配给每个人的问题数
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将要使用的字段拖动到查询网格。 在此示例中,将 AssignedTo.Value 拖到第一列,将 Title 拖到第二列。
-
在“设计”选项卡上的“显示/隐藏”组中,单击“总计”。
“总计”行显示在查询网格中。 默认情况下,“分组依据”显示在查询中每个字段下的“总计”单元格中。
-
在查询网格的 “标题”下的“ 总计 ”行中,单击“ 计数”。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 每人分配的问题计数显示在平展视图中。
计算每个问题分配了多少人
-
在 设计视图中打开查询。
-
在此示例中,添加 “问题” 表。
-
将要使用的字段拖动到查询网格。 在此示例中,将 “标题” 拖动到第一列,并将 AssignedTo 拖到第二列。
-
在“设计”选项卡上的“显示/隐藏”组中,单击“总计”。
“总计”行显示在查询网格中。 默认情况下,“分组依据”显示在查询的“标题”字段下的“总计”单元格中。 默认情况下,表达式显示在“AssignedTo”字段下的“Total”单元格中,因为不能直接对多值字段(只有 <Fieldname>)执行 Group By 操作。值字段。
-
在查询网格的 “AssignedTo”下的 “总计 ”行中,单击“ 计数”。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
结果 按问题分配的人员计数显示在平展视图中。
对多值字段使用 Append 查询
可以使用 Append 查询将单个值插入到多值字段中。 例如,假设要将“Tom Michaels”添加到“问题”表中的 AssignedTo 多值字段。
注意 这是与多值字段一起使用的唯一一种 Append 查询类型。
-
在 设计视图中打开查询。
-
添加 “问题” 表。
-
在“ 设计 ”选项卡上,单击“ 追加”。
-
在“ 追加 ”对话框中,选择“ 问题”,然后单击“ 确定”。
-
在设计网格的 “追加到 ”行中,选择“ AssignedTo.Value”。
-
在设计网格的 “字段 ”行中,输入“Tom Michaels”。
-
若要将追加操作限制为特定问题,请向“设计”网格添加字段(如“标题”),从“追加到”行中删除“标题”,然后输入“问题 3”等条件。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
Access 可能会要求你确认是否追加所选行。 单击“ 是 ”插入行,或单击“ 否 ”取消。
结果 “Tom Michaels”现已添加到问题 3 的 AssignedTo 字段。
重要提示 不能使用引用包含多值字段的表的 Append 查询。 例如,以下查询无效:
INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;
使用包含多值字段的更新查询
可以使用更新查询将多值字段中的单个值更改为另一个值。 在此示例中,你想要更新 AssignedTo 多值字段,以将“Kelly Rollin”替换为“Lisa Miller”。
-
在 设计视图中打开查询。
-
添加 “问题” 表。
-
在“ 设计 ”选项卡上,单击“ 更新”。
-
将 AssignedTo.Value 拖到查询网格。
-
在 “更新到 ”行中,输入“Lisa Miller”。
-
在 “条件” 行中,输入“Kelly Rollin”。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
Access 可能会要求你确认是否追加所选行。 单击“ 是 ”插入行,或单击“ 否 ”取消。
结果 Lisa Miller 替换“ AssignedTo ”字段中的所有相应问题的 Kelly Rollin。
使用包含多值字段的 Delete 查询
使用包含多值字段的表时,可以使用删除查询删除包含多值字段中特定值的记录,或者从表中所有记录的多值字段中删除特定值。 在以下示例中,假设要从“问题”表中删除“David Hamilton”。
重要提示 使用删除查询删除包含数据的多值字段时,将永久丢失该数据, 无法撤消删除操作。 因此,在删除任何表字段或其他数据库组件之前,应备份你的数据库。
从所有记录的多值字段中删除特定值
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
添加 “问题” 表。
-
在 设计视图中打开查询。
-
在“ 设计 ”选项卡上,单击“ 删除”。
-
在 “条件” 行中,输入“David Hamilton”。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
Access 可能会要求你确认是否删除记录。 单击“ 是 ”删除记录,或单击“ 否 ”取消。
结果 对于所有相应的问题,从 中删除了 David Hamilton。
删除多值字段中包含特定值的记录
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
添加 “问题” 表。
-
在 设计视图中打开查询。
-
在“ 设计 ”选项卡上,单击“ 删除 组”。
-
在“ 设计 ”选项卡上的“ 结果 ”组中,单击“ 视图 ”下的箭头,然后单击“ SQL 视图”。
-
输入以下 SQL 语句:
DELETE FROM Issues WHERE (((Issues.AssignedTo.Value)="David Hamilton"));
注意 在这种情况下,只能使用 SQL 语句,而不能使用设计网格。 如果切换到设计网格视图,Access 会在 DELETE 语句后面添加星号 (*) ,应从 SQL 视图中删除该星号。
-
在“设计”选项卡上的“结果”组中,单击“运行”。
Access 可能会要求你确认是否删除记录。 单击“ 是 ”删除记录,或单击“ 否 ”取消。
结果 将删除分配 David Hamilton 的所有问题。