在查询中使用多值字段

在 Microsoft Office Access 2007 中,您可以创建可存放多个值的字段,例如分配了问题的人员的列表。多值字段非常适合于某些情况,例如,当您使用 Office Access 2007 来处理存储在 Windows SharePoint Services 3.0 列表中的信息,并且该列表所包含的某个字段使用的是 Windows SharePoint Services 3.0 中可用的其中一种多值字段类型时。

本文讨论多值字段以及如何在查询中使用多值字段。

本文内容

什么是多值的字段?

查询简介

显示在查询中的多值的字段

在多值字段中显示单个值

了解绑定的值和显示值的查阅字段中

如何在查询中显示的绑定的值

多值字段中输入简单查询条件

搜索多值字段中的多个值

了解包括的影响。在字段列表中的值字段

计数、 分组和使用其他聚合函数

使用多值字段的追加查询

多值字段中使用更新查询

删除查询中使用多值字段

返回页首

什么是多值字段?

假设您有一项任务要分配给某个雇员或承包商,但您认为需要将它分配给多个人员。在 Office Access 2007 中,您可以创建一个多值字段,这样就可从列表中选择人员。

多值字段

单击组合框时,复选框显示为选中状态以指示您的选择。您可以选中或清除列表中的项目,然后单击“确定”提交您的选择。

多值字段组合框

所选的人员将存储在多值字段中,并在显示时用逗号分隔(默认情况下)。

用逗号分隔值的多值字段

多值字段背后的理念是使您在选择并存储多个选项等情况下能够轻松地提供支持,而无需创建更高级的数据库设计。多值字段对于与 Windows SharePoint Services 的集成也很重要,因为 SharePoint 列表也支持多值字段。

您可能想知道为什么 Office Access 2007 允许您在一个字段中存储多个值,而大多数关系数据库管理系统禁止这样做。答案是:Office Access 2007 中的数据库引擎并不真正将多个值存储在一个字段中。即使您看到和使用的似乎是一个字段,但这些值实际上单独存储,并且在一个隐藏的系统表中进行管理。Access 数据库引擎会帮您处理这些工作,自动分隔数据并将它们重新收集在一起,就像它们是在一个字段中。

从技术角度来说,Access 多值字段建立了一个多对多关系模型。例如,考虑一个事件表,您可以在其中将每个事件的责任分配给一个或多个雇员。假设您创建一个名为“分配给”的多值字段,用于将事件分配给雇员。事件和雇员之间是多对多的关系。也就是说,您可以将许多雇员分配给任何一个事件,也可以将任何一个雇员分配给许多事件。

返回页首

查询简介

数据库的主要用途是提供信息:“我公司最畅销的产品是什么?谁是我们的最佳客户?我公司在哪些方面没有达到销售目标?”。您可以从设计完善的数据库中找到所有这些问题的答案。要从 Access 数据库中得到答案,您可以创建一个查询并输入所需的条件。查询值的数据可用来自一个或多个表。在 Access 检索到解答问题的数据后,您可以查看和分析这些数据。在创建了查询后,您可以将该查询作为窗体、报表、图形甚至其他查询的基础。

Office Access 2007 允许您在某些查询中通过特定方式使用多值字段。您可以在查询中显示多值字段,在查询内的多值字段中显示单个值以及使用多值字段执行某些选定的聚合运算和动作查询。

返回页首

在查询中显示多值字段

在查询中显示多值字段时,您必须决定是要显示包含由逗号分隔的所有值的整个多值字段,还是显示每个值的单独行。例如,假设您有一个“问题”表,其中包含用于向人员分配事件的“分配给”字段。您可以使用以下步骤构建一个包含“分配给”字段的查询:

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询设计网格。在本例中,将“标题”字段和名为“分配给”的多值字段拖动到查询网格。

  7. “设计”选项卡上的“结果”组中,单击“运行”

您的查询结果将如下图中所示:第一列显示问题标题,第二列显示多值字段: 

显示“标题”和“分配给”字段的查询结果

在使用设计视图创建查询时,Access 会自动生成相应的 SQL(结构化查询语言)语句。SQL 是 Access 使用的查询语言。可以使用以下步骤切换到 SQL 视图来查看 SQL 语句。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

返回页首

在多值字段中显示单个值

假设您要查看展开的(有时称为平展的)“分配给”多值字段,以使每个名称或“分配给”值显示在单独的行中。为此,您需要通过在“字段”行中向“分配给”追加字符串“.Value”来指定 Value 属性,如下面的查询网格中所示:

显示“标题”和“分配给.值”的查询网格

如果在“字段”行中指定分配给,当您运行查询时,Access 将只在一行中显示多值字段中的所有值。但是,当您使用 Value 属性(如在 AssignedTo.Value 中)时,Access 将以展开的形式显示多值字段,以使每个值都显示在单独的行中。可以使用以下步骤创建查询来显示单个值。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段(在本例中为名为“分配给.值”的多值字段)拖动到查询网格。

  7. “设计”选项卡上的“结果”组中,单击“运行”

显示“标题”和每个“分配给”值的查询结果

在使用设计视图创建查询时,Access 会自动生成相应的 SQL(结构化查询语言)语句。SQL 是 Access 使用的查询语言。可以使用以下步骤切换到 SQL 视图来查看 SQL 语句。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

返回页首

了解查阅字段中的绑定值和显示值

多值字段是查阅字段。查阅字段是表中的一个字段,其中的值是从另一个表或查询中或者从值列表中检索而来的。Access 已在许多版本中支持单值查阅字段。多值查阅字段对于 Office Access 2007 是新内容。查阅字段的目的是用姓名等更有意义的内容替换 ID(或其他外键值)等显示内容。例如,Access 可以显示联系人姓名,而不显示联系人 ID 号。联系人 ID 号是绑定值。系统会在源表或查询中自动查找联系人 ID 号,并用联系人姓名进行替换。联系人姓名是显示值。

与具有显示值和绑定值的单值查阅字段相似,多值查阅字段的显示值显示在用户界面上,而绑定值存储在表中。对于多值字段中的每一项,显示值基于绑定值进行“查阅”。

这意味着 Access 显示的所找到的显示值经常与字段中所存储的绑定值不同。例如,在前面的使用“分配给”字段的示例中,来自“联系人扩展信息”查询的一组雇员 ID 值存储在“分配给”字段中。在创建多值字段时,“联系人扩展信息”查询被选中作为“行来源”。

这些雇员 ID 是绑定值。但是,由于“分配给”字段是查阅字段,因此 Access 在查询结果中显示一组查阅到的值,在此例为联系人姓名。联系人姓名是显示值。 

带有显示显示值的数据表与显示绑定值的数据表

1. 显示值。

2. 绑定值。

可以在设计视图中查看多值字段的“查阅”属性。方法如下:

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. 在导航窗格中,右键单击存储多值字段的表。

  4. 单击“设计视图”

  5. 单击多值字段(例如,单击“分配给”)。

  6. “字段属性”下,单击“查阅”选项卡。

多值查阅字段属性

了解查阅字段的显示值及其绑定值之间的差别非常重要。默认情况下,显示值自动显示在数据表视图中。但绑定值是存储的值以及在查询条件中使用的值,并且是 Access 默认情况下在与其他表的联接中使用的值。

返回页首

如何在查询中显示绑定值

默认情况下,显示值自动显示在数据表视图中。在创建查询时,可以取代此行为以便显示绑定值。以下是您要采取的步骤:

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询设计网格。在本例中,将“标题”字段和名为“分配给”的多值字段拖动到查询网格。

  7. 在查询网格内的“AssignedTo.Value”字段中单击,以使焦点位于该字段中。

  8. “设计”选项卡上的“显示/隐藏”组中,单击“属性表”

  9. 在“属性表”中,在“查阅”选项卡上的“显示控件”属性中,选择“文本框”

查询设计中的“显示控件”属性

在将“显示控件”属性更改为“文本框”时,会禁用常规的查阅列行为,以便显示绑定值而不是显示值。

查询结果中显示的绑定值

返回页首

为多值字段输入简单查询条件

假设您要查看分配给“王凯利”的问题。可以在查询网格内的“条件”行中输入查询条件,但在为查阅字段输入条件时,必须输入绑定值而非显示值。在本例中,您确定王凯利的绑定值是 6。该值是“联系人扩展信息”查询中凯利的主键值。

创建一个查询,显示分配给凯利的问题:

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询网格。在本例中,将“标题”拖动到网格中的第一列。然后,将“分配给”拖动到第二列。

  7. 在该查询网格选项卡上,在“分配给”下的“条件”行中,输入“6”。请注意,您输入的是绑定值而非显示值。

    多值字段中具有条件的查询网格

  8. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

在运行查询时,结果显示在数据表视图中。请注意,该查询仅返回出现“王凯利”的行。

“分配给”值包含 6 的查询结果

在使用设计视图创建查询时,Access 会自动生成相应的 SQL(结构化查询语言)语句。SQL 是 Access 使用的查询语言。可以使用以下步骤切换到 SQL 视图来查看 SQL 语句。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

搜索文本而非 ID 号

如果发现输入 ID 号比较麻烦,而希望输入姓名“王凯利”作为搜索条件,该怎样做?为使其正常运行,查询结果中必须具有一个包含文本姓名的字段。这样,就可以在该字段中搜索“王凯利”了。

由于“AssignedTo.Value”字段的绑定值是 ID,您不能使用该字段,因此必须输入 ID 来筛选该字段。

在本例中,联系人姓名字段不是位于表中,而是位于为“分配给”多值字段提供数据的源查询中。可以将该多值字段的源表或查询与包含该多值字段的表相联接,以在查询结果中包括源表或查询中的字段(本例中为联系人姓名)。然后,可以搜索该字段而非多值字段。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. “显示表”对话框中,单击“查询”选项卡,单击作为多值字段源的查询(本例中为“联系人扩展信息”),然后单击“添加”

  6. 单击“关闭”

  7. 将要使用的字段拖动到查询网格。在本例中,将“标题”从“问题”表拖动到网格中的第一列。然后,将“联系人姓名”从“联系人扩展信息”查询拖动到第二列,并清除“显示”复选框。接下来,将“分配给”拖动到第三列。

  8. 如果“联系人扩展信息”查询中的“ID”字段和“AssignedTo.Value”字段之间的联接线不可见(如下所示),请在“联系人扩展信息”查询内的“ID”字段中单击,并拖动到“问题”表中的“AssignedTo.Value”字段。

    将出现联接线。

    如果任何其他联接线可见,请删除它们。要删除联接线,请单击该联接线以使其突出显示,然后按 Delete。

  9. 在查询窗格中,在“联系人姓名”下的“条件”行中,输入“王凯利”

    查询网格中的“分配给”条件中包含“王凯利”

  10. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

在运行查询时,结果显示在数据表视图中。请注意,查询结果只显示出现“王凯利”的行。由于源表或查询中的 ID 和“AssignedTo.Value”字段为多值字段中的每个值返回一个单独的行,并且每行仅包含一个带有全名的“联系人姓名”字段,因此该技术能够起作用。因为“联系人姓名”是计算字段而非查阅字段,所以没有绑定值和显示值。只有一个值,即联系人姓名。因此,可以提供要匹配的文本,在本例中为“王凯利”。 

查询结果中的“分配给”条件中包含“王凯利”

在使用设计视图创建查询时,Access 会自动生成相应的 SQL(结构化查询语言)语句。SQL 是 Access 使用的查询语言。可以使用以下步骤切换到 SQL 视图来查看 SQL 语句。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

返回页首

在多值字段中搜索多个值

有时候,您需要搜索对多个值的匹配。假设您要查看“王凯利”和“郭莎莎”为“分配给”字段中的值时对应的那些问题。“王凯利”的绑定值是 6,“郭莎莎”的绑定值是 10。要为一个多值字段指定几个条件,可以使用 AND 和 OR 运算符。

要创建查询,请使用以下步骤。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询网格。在本例中,将“标题”拖动到网格中的第一列。然后,将“分配给”拖动到第二列。

  7. 在查询网格中,在“分配给”下的“条件”行中,键入“6 And 10”。

    在多值字段中使用 AND 的查询

  8. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

在运行查询时,结果显示在数据表视图中。

在多值字段中使用 AND 的查询结果

结果只显示同时分配给“王凯利”和“郭莎莎”的问题。在使用设计视图创建查询时,Access 会自动生成相应的 SQL(结构化查询语言)语句。SQL 是 Access 使用的查询语言。可以使用以下步骤切换到 SQL 视图来查看 SQL 语句。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

使用 OR 运算符代替 AND 运算符

假设您要将查询更改为列出出现“王凯利”或“郭莎莎”的那些行。可以编辑 SQL 语句来使用 OR 运算符代替 AND 运算符。该语句应如下所示:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

在运行查询时,结果显示在数据表视图中。

在多值字段中使用 Or 运算符的查询

结果只分配给“王凯利”或“郭莎莎”的问题。

返回页首

了解在字段列表中包括“.Value”字段的影响

了解在查询的输出列的列表(SELECT 列表)中包括“.Value”字段的影响非常重要。在处理查询时,第一步是生成没有 WHERE 子句或筛选的影响的结果集。然后,对初始集合应用筛选。因此,可以这样认为:首先生成结果集,然后由 WHERE 子句中的筛选减小该结果集的大小。例如,考虑以下示例:

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

筛选之前的初始结果集可能如下所示:

标题

分配给

问题 1

韩建明和王依依

问题 2

金琳、王凯利、苏珊珊和郭莎莎

问题 3

李爱杰、王凯利、王依依和彭志军

问题 4

于薇和郭莎莎

问题 5

韩建明和金琳

问题 6

李丽和王凯利

问题 7

李爱杰和苏珊珊

问题 8

韩建明

问题 9

王凯利和郭莎莎

问题 10

王依依和彭志军

接下来,对整个初始结果集执行筛选步骤,并选择不包含韩建明(其 ID 为 3)的行:

标题

分配给

问题 2

金琳、王凯利、苏珊珊和郭莎莎

问题 3

李爱杰、王凯利、王依依和彭志军

问题 4

于薇和郭莎莎

问题 6

李丽和王凯利

问题 7

李爱杰和苏珊珊

问题 9

王凯利和郭莎莎

问题 10

王依依和彭志军

现在,考虑第二个示例:在字段列表中包括“.Value”字段的示例。首先,请注意在筛选之前“.Value”字段的存在如何改变初始结果集 :

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

在筛选之前,初始结果集如下所示:

标题

AssignedTo.Value

问题 1

韩建明

问题 1

王依依

问题 2

金琳

问题 2

王凯利

问题 2

郭莎莎

问题 2

苏珊珊

问题 3

王依依

问题 3

Jesper Aaberg

问题 3

王凯利

问题 3

彭志军

问题 4

郭莎莎

问题 4

于薇

问题 5

韩建明

问题 5

金琳

问题 6

王凯利

问题 6

李丽

问题 7

Jesper Aaberg

问题 7

苏珊珊

问题 8

韩建明

问题 9

王凯利

问题 9

郭莎莎

问题 10

彭志军

问题 10

王依依

现在,对整个初始结果集执行筛选步骤,并只选择不包含韩建明(其 ID 为 3)的行:

标题

AssignedTo.Value

问题 1

王依依

问题 2

金琳

问题 2

王凯利

问题 2

郭莎莎

问题 2

苏珊珊

问题 3

王依依

问题 3

Jesper Aaberg

问题 3

王凯利

问题 3

彭志军

问题 4

郭莎莎

问题 4

于薇

问题 5

金琳

问题 6

王凯利

问题 6

李丽

问题 7

Jesper Aaberg

问题 7

苏珊珊

问题 9

王凯利

问题 9

郭莎莎

问题 10

彭志军

问题 10

王依依

在应用筛选之前和之后可视化结果集使您可以更轻松地正确预测查询结果。

返回页首

对其他聚合函数进行计数和分组以及使用其他聚合函数

您可能希望对存储在多值字段中的成组值执行计算。例如,为每个人分配了多少问题?每个问题分配给多少人?可以使用“汇总”查询中的聚合函数执行此类计算。

聚合函数对一组值执行计算,然后返回单个值。例如,SumCountAvg 是三个可用于计算总计的聚合函数。可以对所有记录或成组的记录计算总计。要按组汇总,您必须在查询网格中选择要作为分组依据的字段。

以下步骤说明如何创建查询来计算分配给每个人的问题数。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询网格。在本例中,将“AssignedTo.Value”拖动到网格中的第一列。然后,将“标题”拖动到第二列。

  7. “设计”选项卡上的“显示/隐藏”组中,单击“汇总”

    “总计”行将显示在查询网格中。默认情况下,“分组依据”显示在查询内“总计”单元格中每个字段的下方。

  8. 在查询网格中,在“标题”下的“总计”行中,单击“计数”

  9. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

在设计查询时,您指定要使用哪些字段进行分组以及使用哪些字段进行汇总(计算)。在本例中,“AssignedTo.Value”是用于分组的字段,而“标题”是用于计算总计的字段。对于要用于分组的字段,选则“总计”行中的“分组依据”。对于要用于计算总计的字段,选择一个计算类型(如 SumAvg)。请注意,在使用多值字段进行分组时,必须使用“.Value”字段。在本例中,不能使用“分配给”字段进行分组,必须使用“AssignedTo.Value”字段。在使用多值字段进行排序时,也必须使用“.Value”字段。 

注意: 在使用多值字段进行分组时,必须使用“.Value”字段。在使用多值字段进行排序时,必须使用“.Value”字段。

在运行查询时,结果显示在数据表视图中。

对每个人分配的问题进行计数的查询

要查看此查询的 SQL 语句,请使用以下步骤切换到 SQL 视图。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

假设您要了解每个问题分配给了多少人。可以按“标题”进行分组,然后对多值字段选择“计数”作为计算方式。要创建查询,请使用以下步骤。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击包含多值字段的表(在本例中为“问题”表),然后单击“添加”

  5. 单击“关闭”

  6. 将要使用的字段拖动到查询网格。在本例中,将“标题”拖动到网格中的第一列。然后,将“分配给”拖动到第二列。

  7. “设计”选项卡上的“显示/隐藏”组中,单击“汇总”

    “总计”行将显示在查询网格中。默认情况下,“分组依据”显示在查询中“总计”单元格的“标题”字段下方。默认情况下,“表达式”显示在“总计”单元格的“分配给”字段的下方,这是因为不能对多值字段执行“分组依据”操作。只能对“.Value”多值字段执行此操作。 

  8. 在查询网格中,在“分配给”下的“总计”行中,单击“计数”

  9. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

在运行查询时,结果显示在数据表视图中。

显示每个问题的人员计数的查询结果

要查看此查询的 SQL 语句,请使用以下步骤切换到 SQL 视图。

  1. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  2. 单击“SQL 视图”

该 SQL 语句类似以下形式:

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

注意: 在此 SQL SELECT 语句中,不论是使用 Count(Issues.AssignedTo) 还是使用 Count(Issues.AssignedTo.Value) 都无关紧要,结果是相同的。 

返回页首

对多值字段使用追加查询

可以使用插入查询将单个值插入到多值字段中。例如,假设您要将“王凯利”添加到某个问题的“分配给”多值字段中。首先,您应确定该问题的主键值以及凯利的联系人记录的主键值。假设该问题的主键值是 10,而凯利的主键值是 6。

以下步骤显示如何创建查询。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

  4. “显示表”对话框中,单击“关闭”

  5. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  6. 单击“SQL 视图”

  7. 在 SQL 视图中,键入以下 SQL 语句:

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

    Access 可能要求您确认是否追加选中的行。单击“是”将插入该行,单击“否”将取消。

“凯利”现在列在该问题的“分配给”字段中。这是用于多值字段的插入查询的唯一形式。

注意: 追加查询是用于将一个表中的记录添加到另一个现有表的查询。在 Office Access 2007中,不能使用引用包含多值字段的表的追加查询。例如,以下查询无效:

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

返回页首

对多值字段使用更新查询

可以使用更新查询来更改现有记录中的数据。在使用更新查询来更新包含多值字段的表时,可以将多值字段中的单个值更改为另一个值。假设您要更新特定问题的“分配给”多值字段,例如,用“郭莎莎”替换“王凯利”。首先,您确定该问题的主键值,以及“凯利”和“莎莎”的联系人记录的主键值。假设该问题的主键值是 8、“凯利”的主键值是 6、“莎莎”的主键值是 10。 

以下步骤显示如何创建查询。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

  4. “显示表”对话框中,单击“关闭”

  5. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  6. 单击“SQL 视图”

  7. 在 SQL 视图中,键入以下 SQL 语句:

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    注释: 

    • 应始终包括一个 WHERE 子句,仅标识要更新的记录。否则,将会更新没打算更改的记录。不包含 WHERE 子句的更新查询会更改表中的每一行。

    • 可以指定一个要更改的值。

  8. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

    Access 可能要求您确认是否更新记录。单击“是”将更新记录,单击“否”将取消。

“郭莎莎”现在替代“王凯利”列在该问题的“分配给”字段中。

返回页首

对多值字段使用删除查询

可以使用删除查询从表中删除记录。在处理包含多值字段的表时,可以使用删除查询来删除在多值字段中包含特定值的记录,或者从表中所有记录内的多值字段中删除特定值。

假设您要从整个表内的“分配给”字段中删除“王凯利”。通过以下步骤创建查询。

  1. 单击“Microsoft Office 按钮” Office 按钮图像 ,然后单击“打开”。

  2. “打开”对话框中,选择并打开数据库。

  3. “创建”选项卡上的“其他”组中,单击“查询设计”

  4. “显示表”对话框中,单击“关闭”

  5. “设计”选项卡上的“结果”组中,单击“视图”下的箭头以显示“视图”菜单。

  6. 单击“SQL 视图”

  7. 在 SQL 视图中,键入以下 SQL 语句:

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. “设计”选项卡上的“结果”组中,单击“运行”以运行查询。

    Access 可能要求您确认是否删除记录。单击“是”将删除记录,单击“否”将取消。

以下示例查询不会从“问题”表中删除任何记录。该查询从出现某个值的每条记录内的“分配给”多值字段中删除该值。如果要从“问题”表中删除记录,请不要在 SQL 语句中的 DELETE 子句之后指定字段。例如,为了删除已分配人员中出现“王凯利”的所有问题,您输入以下 SQL 语句:

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

注意: 在使用删除查询删除记录时要特别小心。记录被删除后将无法恢复。

返回页首

注释: 

  • 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

  • 请在 此处 中查找本文的英文版本以便参考。你和 Microsoft 社区的其他成员可以使用 Community Translation Framework (CTF) 来改进本文。只需将鼠标悬停在文章中的句子上,然后在 CTF 小组件中单击“IMPROVE TRANSLATION”即可。 单击此处了解有关 CTF 的详细信息。 使用 CTF 即表示你同意服务条款

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×