You are on page 1of 31

Access 教案—崔学峰

第四 章
应用 Access 2003 的查询对象是实现关系数据库查询操作的主要方法,借助于 Access
2003 为查询对象提供的可视化工具,不仅可以很方便地进行 Access 2003 查询对象的创建、
修改和运行,而且可以使用这个工具生成合适的 SQL 语句,直接将其粘贴到需要该语句的
程序代码或模块中。这将非常有效地减轻编程工作量,也可以完全避免在程序中编写 SQL
语句时很容易产生的各种错误。
一个 Access 查询对象实质上是一条 SQL 语句,而 Access 提供的查询设计视图实质上
是为我们提供了一个编写相应 SQL 语句的可视化工具。在 Access 提供的查询设计视图上,
通过直观的操作,可以迅速地建立所需要的 Access 查询对象,也就是编写一条 SQL 语句,
从而增加了设计的便利性、减少了编写 SQL 语句过程中可能出现的错误。
♦ 由查询生成的动态数据集合可以用于六种不同的目的,根据其应用目标的不同,可
以将 Access 2003 的查询对象分为六种不同的基本类型。
1.选择查询
♦ 选择查询是从多个数据表中筛选数据形成的查询对象,其中可以包含计算字段、分
类汇总字段,可以设定各种筛选条件。选择查询用于显示数据,形成数据编辑界面。
2.更新查询
♦ 更新查询用于在数据表中更改数据。
3.追加查询
♦ 追加查询用于将数据表外部的数据添加到指定数据表的记录中。
4.生成表查询
♦ 生成表查询用于将选择查询的结果生成为一个数据表对象。
5.删除查询
♦ 删除查询用于在数据表中删除记录。
6.交叉表查询
♦ 交叉表查询用于产生采用垂直方式对记录进行分组汇总的查询结果。

4.1 查询对象设计基础
4.1.1 创建查询对象
4.1.2 查询对象的实质
4.1.3 结构化查询语言简介
4.1.4 运行查询对象

4.1.1 创建查 询对象


在 Access 2003 数据库中设计查询对象是需要在查询设计视图中进行。在 Access 2003 查
询设计视图中,可以在 Access 2003 数据库中新建一个查询对象,也可以针对 Access 2003
数据库中已经存在的一个查询对象进行设计修改。
1.新建查询 对象的操 作
在数据库设计视图中,单击“查询”标签按钮即进入“查询对象”选项卡,如图 4-1
所示。
Access 教案—崔学峰

单击数据库设计视图上的“新建”按钮“ ”,即弹出“新建查询”对话框,

如图 4-2 所示。

图 4-2 “新建查询”对话框
在“新建查询”对话框中,可以从 Access 提供的五种查询对象新建方法中选择一种。但是,
只有学会并理解了“查询设计视图”的操作使用,才可能很好地使用其他方法来加快新建
查询对象的操作。在新建查询对话框中选择“设计视图”选项,然后单击“确定”按钮“

”,即进入“查询设计视图”。由于是新建查询,所以在查询设计视图

中没有任何内容。
在查询设计视图中新建查询对象的第一步操作是指定数据源,因此,一旦由“新建查询
”对话框进入查询设计视图,Access 首先在查询设计视图中弹出“显示表”对话框,用以
提示操作者指定数据源。这时,操作者需要在“显示表”对话框中逐个地指定数据源,并单

击“添加”按钮“ ”,将指定的数据源逐个添加入查询设计视图上半部

的数据源显示区域内。图 4-3 所示为在“零售商店管理信息系统”数据库中新建“销售数据


Access 教案—崔学峰

记录查询”的第一步操作,为查询指定数据源。

图 4-3 “显示表 ”对话框 的操作


Access 查询对象的数据源可以是若干个表,也可以是已经存在的某些查询,还可以是若
干个表与某些查询的组合。与此对应,“显示表”对话框中包含三个选项卡:“表”、“查
询”、“表和查询”。应该根据实际需要进行适当的选择。例如,为“销售数据记录查询”指
定的数据源是“销售数据记录”表。选择并添加完毕查询数据源后,单击“显示表”对话框

上的“关闭”按钮“ ”,就完成了为查询对象指定数据源的操作。

新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查询
中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,
且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字
段排列顺序不同。这一步操作可以通过两种方法完成。
定义查 询字段的 两种方法
新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查
询中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,
且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字
段排列顺序不同。这一步操作可以通过两种方法完成。
( 1)新建包含 数据源全 部数据字 段的查询
将数据源表中的“*”符号拖曳至设计视图下部的“字段”行中;或下拉“字段”行的
列表框,从中选取“*”符号。这时,“字段”行中即出现“*”符号,“表”行中出现该
Access 教案—崔学峰

字段所在的表名,“显示”行中的复选框中出现“√”符号。这个新建的查询对象就基本完
成了,如图 4-4 所示。如此方式建立的查选对象在其运行时,将显示数据源表中所有字段中
的所有记录数据。即,符号“*”代表着全部字段。

图 4-4、新建 包含数据 源全部数 据字段查 询的操作

( 2)新建包含 数据源部 分数据字 段的查询


将数据源表中那些需要显示在查询中的数据字段逐个地拖曳至“字段”行的各列中;或
逐个地下拉“字段”行列表框,从中选取需要显示的数据字段。这时,“字段”行中出现选
中的字段名,“表”行中出现该字段所在表的表名,“显示”行中的复选框中出现“√”
(它表明该查询字段将被显示,同时应该看到,取消这个标记则意味着得到了一个不被显
示的查询字段)。
如此选择查询字段,可以将查询字段的排列顺序设置为不同于数据源中字段的排列顺序 ,
是非常灵活的一种方式。图 4-5 所示为仅选中“销售数据记录”表中四个字段的查询对象新
建的情况。这样的查询对象在其运行时,将显示数据源表中选中字段中的所有记录数据,也
就是说:不进行筛选这样一种关系运算。在整个新建查询对象的操作过程中,这个查询对象
都将命名为“查询?”。当新建操作完成时,需要关闭查询设计视图,此时将出现“保存”
对话框。应该在“保存”对话框中为新建查询对象命名为所需要的名字。

图 4-5、新建 包含数据 源部分数 据字段查 询的操作


2.查询设计视图应用
对于一个已经新建完成的查询对象,通常都需要对其进行一些设计修改。例如,希望图
4-5 所示的查询对象在其运行时,能够按照销售数量由大到小地排列显示;希望仅显示满足
某种条件的记录数据(即进行筛选操作)等等。针对诸如此类的种种需求,就需要对以上初
步建立的查询对象进行设计修改。
Access 教案—崔学峰

4.1.2 查询对 象的实质


建立查询的操作,实质上是生成 SQL 语句的过程。也就是说,Access 提供了一个自动生
成 SQL 语句的可视化工具——查询设计视图。那么,通过在查询设计视图中的一系列操作
后,所生成的 SQL 语句到底是什么样的?为了看到一个查询所对应的 SQL 语句,可以将
查询设计视图转换到 SQL 视图中来观察。单击查询设计视图中菜单栏上的【视图】【 | SQL 视
图】,即进入 SQL 视图中。由图 4-5 查询设计视图转换到 SQL 视图中后,所看到的 SQL 语
句如下:
SELECT 销售数据记录.货号, 销售数据记录.货名, 销售数据记录.销售单价,
销售数据记录.销售数量 FROM 销售数据记录
WHERE (((销售数据记录.销售单价)>=5))
ORDER BY 销售数据记录.销售数量 DESC;
可以看出:查询对象的实质是一条 SQL 语句。打开查询的操作也就是运行相应 SQL 语句
的过程,其结果是生成一个动态数据集合。这个动态数据集合,无论在形式上还是在所能接
受的操作上,都如同一个数据表对象。这就是说,在数据表视图中所能进行的所有操作均能
在查询视图中实施。如果查询视图数据来源于若干个数据表,则可以在查询视图中同时操作
这若干个表中的数据,在一定的限定条件下,也可以同时对这些数据表进行追加记录、删除
记录和更改数据的操作。
4.1.3 结构化查询 语言简介
SQL 一词,是 Structure Query Language 的缩写,即“结构化查询语言”的英文缩写。当今
的所有关系型数据库管理系统都是以 SQL 作为核心的。SQL 概念的建立起始于 1974 年,随
着 SQL 的发展,ISO、ANSI 等国际权威标准化组织都为其制订了标准,从而建立了 SQL 在
数据库领域里的核心地位。
SQL 的四个 特点
( 1)在 方 法 上的 突 破 :SQL 不再局限于数据表中的记录与字段,而是通过设定表与表
间的联接来组合地处理数据。
( 2)容 易 学 习与 维 护 :SQL 语句自然语言,简洁直观,语句的功能非常强大,一条语
句时常可以取代常规程序设计语言的一大段程序,因而容易维护。
( 3)语言共享 :任意一种数据库管理系统都拥有自己的程序设计语言,其各种语言的语
法规定及其词汇相差甚远。但是 SQL 在任何一种数据库管理系统中都是相似的,甚至是相
同的。
( 4)全面支 持客户 /服务 器结构 :实现异种数据库间的数据共享,即在客户端使用的数
据访问语言必须与服务器端所能识别数据查询语言相同。 SQL 就是当今唯一的一个已经形
成标准的数据库共享语言。
SQL 语句按 其功能的 不同可以 分为以下 六大类
① 数据定义语句(DDL,Data-Definition Language)
② 数据操作语句(DML,Data-Manipulation Language)
③ 操作管理语句(TMLT,transaction-Management Language)
④ 数据控制语句(DCL,Data-Control Language)
⑤ 数据查询语句(DQL,Data-Query Language)
⑥ 游标控制语句(CCL,Cursor-Control Language)
1、 SELECT 语法
SELECT 语句的一般语法格式为:
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
FROM tableexpression [, ...] [IN externaldatabase]
Access 教案—崔学峰

[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]
2. SELECT 语法简 要说明
在 SELECT 语法格式中,大写字母为 SQL 保留字,方括号所括部分为可有可无的内容,小
写字母为语句参量。
各项语句参量应该根据实际应用的需要取值,表 4-1 所列为 SELECT 语句中各个参量说明。
表 4-1 SELECT 语句参量说 明
参量 取值及其含义 说明
Predicate 下 列 谓 词 之 一 :可用谓词来限制返回的记录数
ALL、DISTINCT、DISTINCTR量。默认值为 ALL
OW 、TOP

* 全部字段 从特定的表中指定全部字段

Table 表的名称
Field1 字段的名称 包含所要获取的数据

Alias1 字串常量 用来作列标头

Tableexpression 表的名称 这些表包含要获取的数据

Externaldatabase 数据库的名称 该数据库包含 tableexpression


中的表

WHERE 条件表达式 只筛选满足条件的记录


GROUP BY. 字段名列表 根据所列字段名分组
ORDER BY 字段名列表 根据所列字段名排序

4.1.4 运行查 询对象


关闭查询设计视图,在随之出现的“保存”对话框中指定查询对象名称,然后确定之。对
于一个设计完成的查询对象,可以在数据库视图中的查询对象选项卡上看到它的图标,用
鼠标在一个查询对象图标上双击,即可运行这个查询对象。一个运行着的查询一般以查询视
图的形式显示。在数据库视图中,单击查询对象选项卡,选择需要打开的查询对象,单击数

据库视图上的“打开”按钮“ ”,或双击需要打开的查询对象图标,即进

入查询视图。
图 4-7 所示即为上述“销售数据记录查询举例”对象打开后的视图。可以看到,查询视图
与数据表视图是形式完全相同的视图,不同的是查询视图中显示的是一个动态数据集。对于
本例,仅是“销售数据记录”表中的销售单价不低于 5 元的那一部分商品数据按照其销售
数量的大小降序排列而成。
Access 教案—崔学峰

图 4-6 “销售数据查 询 1”对象的 查询视图

4.2 基本选择查询设计
选择查询是最常见的查询类型,它从一个或多个的表中检索数据,并且允许在可以更
新记录(带有一些限制条件)的数据表中进行各种操作数据。也可以使用选择查询来对记录
进行分组,并且对记录作总计、计数、平均以及其他类型总和的计算。选择查询的优点在于能
Access 教案—崔学峰

将多个表或查询中的数据集合在一起,或对多个表或查询中的数据执行操作。

4.2.1 选择查询设计视图
4.2.2 基表联接的意义
4.2.3 排序行和显示行的作用
4.2.4 条件行的作用及其设计方法
4.2.5 “零售商店管理信息系统”中的选择查询设计

4.2.1 选择查 询设计视 图


选择查询的设计视图如图 4-4 所示,被分为上下两个部分。上部为数据源显示区;下部为
参数设置区,由五个参数行组成,分别是字段行、表行、排序行、显示行和准则行。查询对象
基于数据源而生成,且数据源往往不仅仅只有一个,这些数据源既可以是数据表对象,也
可以是查询对象。设计具有多个数据源的查询对象,需在“显示表”对话框(如图 4-3 所示)
中逐一将各个数据源添加至查询设计视图的数据源列表区内。若在关闭“显示表”对话框后,
还需添加数据源,可在数据源列表区内右击鼠标,在随之弹出的快捷菜单上单击【显示表】,
或在查询设计视图菜单栏上单击【视图】 |
【显示表】,均可再现“显示表”对话框,参见图 4-
3。
在查询设计视图中,选择确定多个数据源(表或查询)后,必须保证各个数据源数据间
存在必要的联接关系。表与表间的联结如果已在数据库视图中通过建立表间关系形成,则这
些关系将被继承在查询设计视图中。如果上述关系不存在,则必须在查询设计视图中指定,
如此指定的关系仅在本查询中有效。
在查询设计视图中指定表间关系的操作为,从作为数据源的表或查询字段列表中将一个
字段拖到另一个作为数据源的表或查询字段列表中的相等字段 s(即具有相同或兼容的数
据类型且包含相似数据的字段)上,即完成了两个数据源之间的联接。所谓将一个字段拖到
另一个字段上,是指用鼠标指向一个字段,然后按住鼠标左键拖曳至另一个字段上,然后
放开鼠标左键。使用这种方式进行联接,只有当联接字段的值相等时,Access 才会从两个表
或查询中选取记录。图 4-8 所示为销售数据记录查询中含有“进货单价”以及销售利润数据
的设计参数。
图 4-7 查询数据源 设定与字 段显示格 式设定

4.2.2 基表联 接的意义


在图 4-8 中可以看到,由于这个查询的数据分别取自“库存数据记录”表和“销售数据
记录”表,因此必须指定这两个数据源,这两个数据源称为本查询的基表。基表之间必须建
Access 教案—崔学峰

立联接,且其联接字段必须具有相同类型。如果已经在数据库设计视图指定了两个基表的联
接,则在查询设计视图中会得到继承。如果未在数据库设计视图指定两个基表的联接,则在
查询设计视图中指定的联接仅在本查询中有效。
Access 支持的联接类型有三种:只包含来自两个表的联接字段相等处的行;包括所有“
主表”的记录和那些联接字段相等的“从表”的记录;包括所有“从表”的记录和那些联
接字段相等的“主表”的记录。关于表对象联接概念中的“主表”和“从表”的含义,请参
阅第三章中的相关内容。
在上述三种联接类型中,第一种联接类型是默认类型。上述实例采用第一种联接类型,即
只显示在“库存数据记录”和“销售数据记录”中均存在的记录,如图 4-9 所示。
图 4-8 “销售数据明 细查询” 的查询视 图

4.2.3 排序行 和显示行 的作用


1.排序的作 用与设计 方法
2.显示行的 作用与设 计方法

1.排序的作 用与设计 方法
如同在第三章中所述,排序可以令某一列数据有顺序的排列,便于查看。在设计查询对象
时,若需要哪一列数据有顺序的排列,可单击位于该列排序行上的下拉式列表框,从中选
择所需的排序种类,如图 4-6 所示。
2.显示行的 作用与设 计方法
在查询设计视图中,显示行内是一个复选框。如果希望某一字段的数据在查询运行时得
到显示,则在该复选框中单击,使其显示有“√”符号,这也是 Access 的默认参数;如果
希望某一字段的数据在查询运行时不显示,但又需要它参与运算,则在该复选框中单击,
使其中的“√”符号消失。对于既不需要显示,也不需要参与运算的字段,根本就不要将其
选入查询中。

4.2.4 条件行 的作用及 其设计方 法


设定准则恐怕是设计查询对象时最为困难的操作。如果需要给定某种条件来筛选数据记
录,就必须要设定准则了。即,准则是为筛选数据记录设定的条件,条件必须是一个合法的
VBA 关系或逻辑表达式。VBA 语句及其表达式等内容留待第五、九章介绍,本小节介绍利
用向导设定准则的操作方法。
Access 教案—崔学峰

在查询设计视图中,令光标停留在需要设定准则的字段中的准则行内,单击查询设计视

图工具栏上的“向导”工具按钮“ ”,即弹出“表达式生成器”对话框,如图

4-10 所示。准则的设定可以在这个对话框中操作完成。
例如,如果希望查看其销售利润位于 1 元至 5 元之间的那些商品的销售数据,就应该在
“销售利润”列的准则行内输入“Between 1 And 5”这样的 VBA 表达式。这样的表达式可以
在准则行中直接输入,但不如在“表达式生成器”对话框中操作生成,请参阅图 4-10 中的
图示。

图 4-9 应用“表达 式生成器 ”设定查 询准则

在“表达式生成器”对话框中,双击对话框左下方列表框中的“操作符”,在随之出
现的中下方列表框中选择“比较”,在对话框右下方的列表框中双击“ Between”选项,对
话框上端的文本框中即出现“ Between [表达式 1] And [表达式 2]”字样。这表明,本表达式
使用“Between”操作符。“Between”是一个双元操作符,需要为其确定两个操作数。单击“
[表达式 1]”后,在此处输入 1,即输入了第一个操作数;再单击“[表达式 2]”,在此处输入
5,即输入了第二个操作数。此时可以看到输入的表达式为“Between 1 And 5”。表达式输入
完毕后,单击对话框上的“确定”按钮“ ”,对话框消失。查询设计视图中对应准
则行上的表达式就生成了。接着,可以打开这个查询对象,与前述查询对象打开时的显示数
据进行比较,观察该准则的作用。也可以在查询设计视图中切换至 SQL 视图,仔细观察对
应的 SQL 语句。

4.2.5 “零售商店管 理信息系 统”中的 选择查询 设计


数据库应用系统的实际应用总是根据需求进行的,设计查询对象应该包括哪些字段、以
哪种顺序排列以及筛选条件如何确定,等等,都应该根据需求分析来决定。尤其是在筛选条
件准则中,常常不能使用常量,而需使用变量,且这些变量的赋值又往往是用户在窗体上
操作时输入的。因此,查询准则中的条件表达式常常包含着变量。
图 4-10 “库存数据记 录查询” 的属性设 置
Access 教案—崔学峰

图 4-10 所示查询对象所对应的 SQL 语句为:


SELECT 销售数据记录.货号, 销售数据记录.货名, 销售数据记录.规格,
销售数据记录.计量单位, 销售数据记录.销售单价, 销售数据记录.销售数量,
[销售数据记录]![销售单价]*[销售数据记录]![销售数量] AS 销售金额,
销售数据记录.销售日期, 销售数据记录.销售人员
FROM 销售数据记录
WHERE (((销售数据记录.销售日期)=[Forms]![销售数据录入]![Text29]) AND
((销售数据记录.销售人员)=[Forms]![销售数据录入]![Combo45]));

图 4-11 “柜存数据记 录查询” 的属性设 置

♦ “柜存数据记录查询”对象所对应的 SQL 语句为:


♦ SELECT 柜存数据记录.货号, 柜存数据记录.货名, 柜存数据记录.规格, 柜存数据记
录.计量单位,
柜存数据记录.销售单价, 柜存数据记录.柜存数量,
[柜存数据记录]![销售单价]*[柜存数据记录]![柜存数量] AS 柜存金额,
柜存数据记录.上柜日期, 柜存数据记录.上柜人, 柜存数据记录.营业员
Access 教案—崔学峰

FROM 柜存数据记录;
图 4-12 “销售数据记 录查询” 的属性设 置

♦ “销售数据记录查询”对象所对应的 SQL 语句为:


SELECT 销售数据记录.货号, 销售数据记录.货名, 销售数据记录.规格, 销售数据记录.计量单
位,
销售数据记录.销售单价, 销售数据记录.销售数量,
[销售数据记录]![销售单价]*[销售数据记录]![销售数量] AS 销售金额,
销售数据记录.销售日期, 销售数据记录.销售人员
FROM 销售数据记录
WHERE (((销售数据记录.销售日期)=[Forms]![销售数据录入]![Text29]) AND
((销售数据记录.销售人员)=[Forms]![销售数据录入]![Combo45]));

4.3 实用选择查询设计
选择查询是 Access 支持的多种类型查询对象中最重要的一种,它不仅仅可以完成数据
的筛选、排序等操作,更常见的用途还在于它的计算功能、汇总统计功能以及接受外部参数
的功能。同时,选择查询还是其他类型查询创建的基础。在后续各节中我们会看到,为了创
建其他类型的查询,常常会先建立一个选择查询,然后再逐步进行设计修改,以达到实现
相关类型查询的设计结果。
4.3.1、计算查询列设计
4.3.2、汇总查询设计
4.3.3、参数查询对象设计
“零售商店管理信息系统”中的汇总查询设计

4.3.1 计算查 询列设计


Access 教案—崔学峰

通过查询操作完成基表内部或各基表之间数据的计算,是建立查询对象的一个常用的功
能。完成计 a 达式,设置计算查询列的操作可以借助于向导在“表达式生成器”对话框中完
成。令光标停留在需要设置计算查询列的“字段”行上,单击查询设计视图工具栏上的“向
导”工具按钮“”,即弹出“表达式生成器”对话框,如图 4-10 所示。与设定查询准则的
逻辑表达式不同,计算查询列上是一个计算表达式。
图 4-8 中所示的“销售利润”列就是一个计算查询列,在这一列的“字段”行中填入
的内容为:
销售利润 : [销售单 价 ]*[销售数量 ]-[进货单价 ]*[销售数 量 ]
这个计算表达式分为用冒号隔开的两个部分。冒号右边是一个 VBA 算术表达式,它
的含义是用本查询中的“销售单价”与“销售数量”两个字段的数据之积,减去本查询中
的“进货单价”与“销售数量”两个字段的数据之积。字段名均用方括号括起来,这属于
VBA 的语法规则,必须遵循。由于所用字段都是本查询中的字段,因此不用指明其父类,
否则,需写成:[表名]![字段名]。所用到的算术运算符与其他程序设计语言使用的算术运
算符相同。
冒号左边将等同于字段名,本例中设定为“销售利润”。如果使用向导,在“表达式生成
器”对话框中完成计算表达式的设计,Access 将用“表达式 1”作为第一个计算查询列的字
段名,并依次为后续的计算查询列命名字段。
一般情况下,人们都不会满意将字段名命名为“表达式 1”这样的形式。这就需要自己来
重新给字段命名。为此,可以在“表达式生成器”对话框中完成计算表达式的设计后,单击
确定按钮退回查询设计视图后,再将“表达式生成器”自行确定的“表达式 1”修改为“销
售利润”。其操作方法是,鼠标单击字段行中的“表达式 1”,再删除该字段行中位于计算
表达式冒号左侧的字符,并输入所希望的字符串。
还可以设计计算查询列中数据的显示格式。其操作方法是,在需要重新设置显示格式的计
算查询列“字段”行处右击鼠标,在随之弹出的快捷菜单上单击【属性】;或令光标停留在
需要设置显示格式的计算查询列“字段”行上,在查询设计视图的菜单栏上单击【视图】 |
【属性】(或单击查询设计视图工具栏上“属性”工具按钮“”)。即弹出“字段属性”对话
框,如图 4-12 所示。
在“字段属性”对话框中,即可为所选字段设置包括显示格式在内的各项字段属性。图 4-
12 所示,是将“销售数据记录查询”的“销售利润”计算查询列的显示格式设置为货币格
式的参数设置操作示例。

4.3.2 汇总查 询设计


设计汇总查询也是在查询设计视图中进行。在查询设计视图打开一个已经建立的选择查
询对象,在工具栏上单击“汇总”按钮“”。这时,在查询设计视图下部的参数设置区中将
增加一个名为“总计”的行,其间参数均为“ Group By”。“总计”行中的参数标明各字段
是属于分类字段(Group By)还是汇总字段(Expression),一个汇总查询至少应有一个分
类字段和一个汇总字段。

以“销售业绩查询”为例,如果希望得到以“货名”、“规格”、“进货单价”和“销售
单价”三个字段作为分类字段的“销售数量”和“销售利润”两个字段的汇总数据,则应
将“货名”、“规格”、“进货单价”和“销售单价”四个字段均设置为分类字段,而将“
销售数量”和“销售利润”两个字段都设置为汇总数据。图 4-13 所示即为相关设计参数。三
个分类字段可以采用 4.1.1 讲述的设定字段名的方法设定,且“总计”行参数不用修改。两
个汇总字段可采用 4.3.1 节讲述的设定计算字段的方法设定,且“总计”行参数会自动根据
Access 教案—崔学峰

所设立的计算表达式而改为“Sum”或“Expression”。
图 4-13 “销售利 润明细查 询”的总 计属性设 计

图 4-13 所示查询对象所对应的 SQL 语句为:


SELECT 库存数据记录.货名, 库存数据记录.规格, 库存数据记录.进货单价,
销售数据记录.销售单价,
Sum([销售数据记录]![销售数量]) AS 销售数量,
[销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润
FROM 库存数据记录 INNER JOIN 销售数据记录
ON 库存数据记录.货号 = 销售数据记录.货号
GROUP BY 库存数据记录.货名, 库存数据记录.规格, 库存数据记录.进货单价, 销售数据记录.
销售单价;

4.3.3 参数查 询设计


此处所指的参数特指查询准则中使用的变量,参数查询对象则是指本查询对象所使用的
参数需由数据库中其他对象赋值方能运行的查询。
以 4.3.2 节提到的需求为例。一般会希望针对某一个时间段内的销售数据进行汇总统计,
而这个时间段又应该由数据库应用系统的使用者在他的操作中输入。假定输入这个时间段的
操作是在一个称为“销售业绩查询汇总”的窗体中进行,则相应的“销售业绩查询”参数
设置如图 4-14 所示。其中准则表达式为:
Between [Forms]![销售业绩查询汇总]![Text29] And [Forms]![销售业绩查询汇总]![Text67]))
其含义是:销售日期起于“销售业绩查询汇总”窗体中“ Text29”文本框中输入的起始日
期,而终于“销售业绩查询汇总”窗体中“Text67”文本框中输入的终止日期。它导致的运
行结果就是筛选出在这个日期段内的销售数据记录。
图 4-14 “销售利 润明细查 询”的条 件属性设 计
Access 教案—崔学峰

图 4-14 所示查询对象所对应的 SQL 语句为:


SELECT 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名, 库存数据记录.规
格,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价, Sum(销售数据记录.销售数量) AS 销售数量,
Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量]) AS 销售金额,
[销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润, 销售数据记录.销售人员
FROM 库存数据记录 INNER JOIN 销售数据记录 ON 库存数据记录.货号 = 销售数据记录.
货号
GROUP BY 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名,
库存数据记录.规格, 库存数据记录.计量单位, 库存数据记录.进货单价,
库存数据记录.库存数量, 销售数据记录.销售单价, 销售数据记录.销售人员
HAVING (((销售数据记录.销售日期) Between [Forms]![销售业绩查询汇总]![Text29]
And [Forms]![销售业绩查询汇总]![Text67]))
ORDER BY 销售数据记录.销售日期;

4.3.4、“零售 商店管理 信息系统 ”中的汇 总查询设 计


1.“销售结转清查询”设计
“零售商店管理信息系统”数据库中的“销售结转清查询”对象设计如图 4-15 所示。
图 4-15 “销售结转清 查询”的 各项属性 设计

图 4-15 所示查询对象所对应的 SQL 语句为:


SELECT 柜存数据记录.货号, 柜存数据记录.货名, 柜存数据记录.规格, 柜存数据记录.计量单
位,
柜存数据记录.柜存数量, 柜存数据记录.销售单价,
Sum(销售数据记录.销售数量) AS 销售数量,
Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量])
AS 销售金额, 销售数据记录.销售日期, 销售数据记录.销售人员
FROM 柜存数据记录 INNER JOIN 销售数据记录 ON 柜存数据记录.货号 = 销售数据记录.
货号
GROUP BY 柜存数据记录.货号, 柜存数据记录.货名, 柜存数据记录.规格,
柜存数据记录.计量单位, 柜存数据记录.柜存数量, 柜存数据记录.销售单价,
Access 教案—崔学峰

销售数据记录.销售日期, 销售数据记录.销售人员
HAVING (((销售数据记录.销售日期)=[Forms]![交接班结转清]![Text29])
AND ((销售数据记录.销售人员)=[Forms]![交接班结转清]![Combo45]))
ORDER BY 柜存数据记录.货号;

2.“销售业绩查询”设计
♦ “零售商店管理信息系统”数据库中的“销售业绩查询”对象设计如图 4-16 所示。

图 4-16 “销售业绩查 询”的各 项属性设 计

♦ 图 4-16 所示“销售业绩查询”对象所对应的 SQL 语句为:


SELECT 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名, 库存数据记录.规
格,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价, Sum(销售数据记录.销售数量) AS 销售数量,
Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量]) AS 销售金额,
[销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润, 销售数据记录.销售人员
FROM 库存数据记录 INNER JOIN 销售数据记录 ON 库存数据记录.货号 = 销售数据记录.
货号
GROUP BY 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名, 库存数据记录.
规格,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价, 销售数据记录.销售人员
HAVING (((销售数据记录.销售日期) Between [Forms]![销售业绩查询汇总]![Text29]
And [Forms]![销售业绩查询汇总]![Text67]))
ORDER BY 销售数据记录.销售日期;
Access 教案—崔学峰

4.4 更新查询设计
4.4.1、更新查询的作用
4.4.2、更新查询的设计
4.4.3、更新查询的实质

4.4.1、更新 查询的作 用
如果需要对数据表中的某些数据进行有规律地成批更新替换操作,就可以使用更新查询
来实现。如果读者曾经学习过 xBase 一类的数据库系统工具,可以理解为: Access 2003 中
的更新查询相当于 xBase 中的 Replace 语句的功能。
例如,现需要在 CMMIS 数据库中将所有商品的销售单价高于 6 元的那些商品的销售单
价下调 10%,如果在数据表视图中采用手工操作,将是一件不可思议的事情。设计一个更新
查询就可以很方便地完成这样的操作。

4.4.2、更新 查询的设 计
首先,创建一个选择查询,指定其数据源为需要更新其中数据的表对象。接着,将其中需
要更新数据的字段逐一拖曳至查询设计视图的“字段”行中。然后,单击菜单栏上的【查询】
| 更新查询】,可以看到在查询设计视图中新增一个“更新到”行。此时,需要在该行中填

入数据更新的规则,例如“销售单价*0.9”。如果只是需要更新某些满足一定条件的记录中
的数据,则应该在查询设计视图的“Where”行中填写记录更新条件,例如“销售单价>6 元
”。最后,保存这个查询对象,即完成了一个更新查询对象的设计操作。只需运行该查询对
象,数据源表中的相关数据就按照数据更新规则得到了更新。
新建一个选择查询,指定数据源为“柜存数据记录”表,将“柜存数据记录”表中字段
“销售单价”拖曳至“字段”行中,单击菜单栏上的【查询】【更新查询| 】。在“更新到” 行
中输入计算更新规则“[柜存数据记录]![销售单价]*0.9”,在“准则”行中输入计算更新条
件“> 6”(当然也可以应用向导完成这两行的规则输入操作)。图 4-28 所示为“销售单价_
更新查询”的设计参数。
图 4-17 “销售单 价 _更新查询” 设计参数
Access 教案—崔学峰

设计完成一个更新查询后,就可以打开它。与打开选择查询对象、交叉表查询对象的情况
不同,Access 2003 并不显示查询数据表视图,而是根据指定的更新条件与计算更新规则,
在数据库中更新了数据源表中相关字段的数据。比如,“销售单价 _更新查询”打开一次的
结果,就将“柜存数据记录”表中的“销售单价”字段数据下调了 10%,且只是改变那些
原销售单价高于 6 元的记录中的数据。
图 4-18 “柜存数据记 录”表更 新前的数 据

图 4-19 “柜存数据记 录”表更 新后的数 据

4.4.3、更新 查询的实 质
查询的实质就是 SQL 语句的应用。观察“销售单价 _更新查询”的 SQL 语句,就可以看
到,“销售单价_更新查询”是一条用于数据库数据更新的 SQL 语句:
UPDATE 柜存数据记录 SET 柜存数据记录.销售单价 = [柜存数据记录]![销售单价]*0.9
WHERE (((柜存数据记录.销售单价)>6));
Access 教案—崔学峰

4.5、生成表查询设计
4.5.1、生成表查询的作用
4.5.2、生成表查询的设计
4.5.3、生成表查询的实质

4.5.1、生成 表查询的 作用
查询只是一个操作的集合,其运行的结果是一个动态数据集。当查询运行结束时,该动态
数据集合是不会为 Access 所保存的。如果希望查询所形成的动态数据集能够被固定的保存
下来,就需要使用生成表查询了。
例如,如果希望将 CMMIS 数据库中记录的某段时间内的销售业绩汇总数据导出为
HMTL 文档,用于 Web 页发布,就可以将 4.3.3 节中所述的“销售业绩查询”改建为一个
生成表查询。只要运行这个生成表查询,即可创建一个名为“销售业绩汇总表”的数据表对
象,这个数据表对象称为“生成表”。以下,让我们来说明如何设计这样一种 Access 查询
对象。

4.5.2、生成 表查询的 设计
设计生成表查询的操作步骤如下,首先设计合适的选择查询,然后将其指定为生成表
查询。下面以创建“销售业绩_生成表查询”为例,说明其操作步骤。
复制一份“销售业绩查询”,并命名为“销售业绩_生成表查询”;在数据库设计视图
中的查询对象选项卡上选中它,单击工具栏上的“设计”按钮;在随之出现的查询设计视
图中,单击菜单栏上的【查询】|【生成表查询】,如图所示。
图 4-20 “销售业绩 _生成表 查询”设 计视图
Access 教案—崔学峰

随之即会弹出“生成表”对话框,如图所示。
在“生成表”对话框中,需要确定生成表的名称,并确定生成表所属的数据库。例如,
希望在当前数据库中,生成一个名为“销售业绩汇总表”的生成表,即可设计如图中所示

设计参数。单击“确定”按钮“ ”;即完成了“销售业绩_生成表查询”的

设计操作。

图 4-21 “生成表”对 话框

设计完成一个生成表查询后,就可以打开运行它。与打开前述两类查询的情况不同,
Access 并不显示查询数据表视图,而是在数据库中新建了一个数据表对象,其中的数据即
为生成表查询运行的结果。
例如,“销售业绩 _生成表查询”打开一次的结果,就是在数据库中新建了一个名为
“销售业绩汇总表”的数据表对象,其中的数据就是“销售业绩 _生成表查询”的运行结果。
可以打开这个数据表查看以下,会发现它的数据显示内容完全相同于“销售业绩查询”的
数据显示内容。然后,再利用 Access 的数据导出功能,将这个生成表导出为 HMTL 文档,
即实现了本节开始提出的设计目标。 .
Access 教案—崔学峰

4.5.3、生成 表查询的 实质
查询的实质就是 SQL 语句的应用。观察“销售业绩 _生成表查询”的 SQL 语句,就可以
看到,“销售业绩_生成表查询”就是在“销售业绩查询”的 SQL 语句中增加了一个 INTO
子句。
以下是“销售业绩_生成表查询”的 SQL 语句:
SELECT 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价, Sum(销售数据记录.销售数量) AS 销售数量,
[销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润
INTO 销售业绩汇总表
FROM 库存数据记录 INNER JOIN 销售数据记录 ON 库存数据记录.货号 = 销售数据记录.
货号
GROUP BY 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价
ORDER BY 销售数据记录.销售日期;

4.6、追加查询设计
4.6.1、追加查询的作用
4.6.2、追加查询的设计
4.6.3、追加查询的实质

4.6.1、追加 查询的作 用
如果需要从数据库的某一个数据表中筛选出一些数据,可以使用选择查询。进而,如果需
要将这些筛选出来的数据追加到另外一个结构相同的数据表中,则必须使用追加查询了。因
此,追加查询的作用就是,从一个数据表中筛选出一些数据追加到另外一个具有相同结构
的数据表中。同样可以与 xBase 所支持的 Append From 语句作一个比较,就可以看到它与
Access 的追加查询的功能是相同的。但是,二者的使用方式却不尽相同,Access 追加查询
数据源应该是提供数据的表对象,亦即数据源表是显式打开的,而接收数据的表对象并未
显式打开。
例如,在介绍生成表查询时,曾经创建了一个名为“销售业绩 _生成表查询”的生成
表查询,用“销售数据记录”表中的数据生成一个“销售业绩汇总”表。随着商品销售业务
的不断进行,新的销售数据记录不断产生,于是希望能够利用新产生的销售数据记录形成
新的一段时间内的销售业绩数据,将其追加到“销售业绩汇总”表中。这就必须应用追加查
询功能了。
Access 教案—崔学峰

4.6.2、追加 查询的设 计
首先,创建一个选择查询,其数据源为需要从中筛选数据的表对象。接着,将其中需要追
加到另一个表对象中的字段逐一拖曳至查询设计视图的“字段”行中;然后,单击菜单栏
上的【查询】 |
【追加查询】 ,在回答了随即弹出的“追加”对话框中关于被追加表对象名称的
问题后,可以看到在查询设计视图中新增一个“追加到”行。这时,需要在“追加到”行中
逐个输入需要追加数据的表对象中的对应字段名(当然可以应用向导完成这项操作,此处
并不要求数据源表对象字段名与追加数据表对象字段名相同)。如此,即完成了追加查询的
设计。运行该查询,数据源表中的相关数据就追加到指定的数据表中的对应字段中去了。
现以设计“销售业绩_追加查询”为例,说明追加查询的设计方法。“销售业绩_追加查询
”的追加表对象及其对应字段与生成表查询中的实例说明相同,如图所示。
首先,新建一个选择查询,指定数据源为“销售数据记录”表和“库存数据记录”表。接
着,逐一将数据源表中相关的字段拖曳至查询的“字段”行中,并创建一个销售利润计算
|
列。然后,单击菜单栏上的【查询】【追加查询】 ,在随即弹出的“追加”对话框中选择当前
数据库,并在“表名称”列表框中选择“销售业绩汇总表”。单击“确定”按钮,即完成了
“销售业绩_追加查询”对象的设计操作。图示为“销售业绩_追加查询”的查询设计视图及
其各项设计参数。
图 4-21 在“追加” 对话框中 选择选择 “销售利 润明细查 询( 2004 年 10 月下) ”

图 4-22 “销售业绩 _追加查 询”的设 计参数

4.6.3、追加 查询的实 质
查询的实质就是 SQL 语句的应用。观察“销售业绩 _追加查询”的 SQL 语句,就可以
看到,“销售业绩_追加查询”是一条用于追加数据库记录的 SQL 语句:
Access 教案—崔学峰

INSERT INTO 销售业绩汇总表 ( 销售日期, 货号, 货名, 计量单位, 进货单价, 库存数量,


销售单价, 销售数量, 销售金额, 销售利润 )
SELECT 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价, Sum(销售数据记录.销售数量) AS 销售数量,
Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量]) AS 销售金额,
[销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润
FROM 库存数据记录 INNER JOIN 销售数据记录 ON 库存数据记录.货号 = 销售数据记录.
货号
GROUP BY 销售数据记录.销售日期, 库存数据记录.货号, 库存数据记录.货名,
库存数据记录.计量单位, 库存数据记录.进货单价, 库存数据记录.库存数量,
销售数据记录.销售单价
ORDER BY 销售数据记录.销售日期;

4.7、删除查询设计
4.7.1、删除查询的作用
4.7.2、删除查询的设计
4.7.3、删除查询的实质

4.7.1、删除 查询的作 用
如果需要从数据库的某一个数据表中有规律地成批删除一些记录,可以使用删除查询来
满足这个需求。如果将 Access 删除查询对象的功能与 xBase 所支持的相关语句做一个比较,
可以看到 Access 删除查询对象所能够实现的功能等同于 xBase 中的 Delete 语句和 Pack 语句
的组合。应用删除查询对象成批地删除数据表中的记录,应该指定相应的删除条件,否则就
会删除数据表中的全部数据。这就是说,删除查询对象必需包含有对应的删除条件,而这个
删除条件称为准则。由于 Access 删除查询对象的特点,其间包含的记录删除准则必须能够
用一个关系表达式或逻辑表达式表述。
例如,如果使用“零售商店管理信息系统”的企业已经不再经营某些商品了,且这些
商品也已经销售完毕,即其在“库存数据记录”表中的“库存数量”为零。这时,希望将这
些商品的记录从“库存数据记录”表中删除,就应该考虑建立一个删除查询来完成这项操
作。而实际上,如此确定的被删除记录显然可以用这样一个关系表达式予以描述:“ [库存
Access 教案—崔学峰

数据记录]![库存数量]=0”,因此,完全可以应用 Access 的删除查询对象进行这些数据记录


的有规律成批删除。

4.7.2、删除 查询的设 计
首先,创建一个选择查询,其数据源为需要从中删除记录的表对象。接着,将其中需要作
为删除准则使用的字段逐一拖曳至查询设计视图的“字段”行中。然后,单击菜单栏上的
【查询】 |
【删除查询】菜单项,即可以看到在查询设计视图中新增一个“删除”行,该行中填
有“Where”字样。这时,即可以在“删除”行下端的“准则”行中输入删除准则(当然可
以应用向导完成这项操作)。至此,所需要的删除查询即设计完毕。运行该查询,数据源表
中的满足准则条件的记录就被删除了。
下面以设计“库存数据记录 _删除查询”,使其能够删除“库存数据记录”表中那些“
库存数量”等于零的数据记录为例,说明删除查询的设计操作方法。
新建一个选择查询,指定其数据源为“库存数据记录”表对象,将“库存数据记录”表
中作为删除准则条件判断的“库存数量”字段拖曳至“字段”行中;单击菜单栏上的【查询】
|
【删除查询】 ,查询设计视图中将增加一行,其行首标题为“删除”;在新增加的“删除”
行下面的“准则”行中输入删除准则“ [库存数据记录 ]![库存数量] = 0”;即完成了“库存
数据记录_删除查询”对象的设计操作。
图示为“库存数据记录_删除查询”的查询设计视图及其各项设计参数。运行这个查询即
可删除“库存数据记录”表中那些“库存数量”为零的记录。
注意,如果有些“库存数量”等于零的数据记录不能被删除,即,尽管库存商品已经销
售完毕,但该商品还打算继续进货,继续经营。在这样的情况下,上述删除查询的设计参数
显然就不合适了。那么,这样的删除准则将如何确定呢?当然只能根据实际情况再作分析了。

图 4-23 “库存数据记 录 _删除查询” 的设计视 图


Access 教案—崔学峰

4.7.3、删除 查询的实 质
查询的实质就是 SQL 语句的应用。观察“库存数据记录_删除查询”的 SQL 语句,就可
以看到,“库存数据记录_删除查询”是一条用于删除数据库记录的 SQL 语句:
DELETE 库存数据记录.库存数量
FROM 库存数据记录
WHERE (([库存数据记录]![库存数量]=0));
Access 教案—崔学峰

4.8、交叉表查询设计
交叉表查询是 Access 支持的另一类查询对象。交叉表查询显示来源于表中某个字段的总
结值(合计、计算以及平均),并将它们分组,一组列在数据表的左侧,另一组列在数据表
的上部。例如,在“零售商店管理信息系统”数据库的“销售数据记录”表中,如果希望得
到各个销售人员的销售总金额一览表,就需要应用交叉表查询来实现。可以看到,交叉表查
询运行的显示形式,是作为数据源的表转置后形成的数据表。即,将数据源表中的某一字段
数据作为交叉表查询的字段名,某几个字段数据作为分类汇总的依据,某一个字段数据被
汇总计算后显示在各自的字段下。
图 4-24 “销售数据记 录 _交叉表”的 数据表视 图

4.8.1、应用向导创建交叉表查询
4.8.2、在交叉表查询设计视图中修改交叉表查询

4.8.1、应用 向导创建 交叉表查 询


仔细观察图所示,就会发现,它还不是最终所需的形式。其中,“总计:销售数量”显示
的是商品销售数量的合计数,而我们所期望的是用“总计”字段显示商品销售金额的合计
数,这是由于作为查询数据源的“销售数据记录”表中没有“销售金额”字段的缘故。另外,
我们还希望“总计”字段数据的显示格式为“货币”数据格式。因此,在应用向导完成交叉
表查询的创建操作之后,还应该加以一些设计修改。交叉表查询的设计修改操作需在交叉表
查询设计视图中进行。
在数据库设计视图中的查询对象选项卡上,选定刚刚应用向导建立完成的“销售数据记
录交叉表”,单击工具栏上的“设计”按钮,即进入交叉表查询设计视图,如图所示,它
显示了应用向导建立的“销售数据记录_交叉表”设计参数。在这个视图中,可以看到三个
用以分类的“行标题”列、一个用以汇总的“列标题”列和一个用以计算的“值”列(其字
段名为“值: Sum([销售数据记录 ]![销售单价]*[销售数据记录 ]![销售数量])”,可以利用表
达式向导设定),这是任何一个交叉表查询的基本组成。最后一列的作用是得到一个合计数,
其字段名为“总计: Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量])”,也是
利用表达式向导设定的。
Access 教案—崔学峰

图 4-25 “交叉表 查询向导 1”对话框

图 4-26 “交叉表 查询向导 2”对话框


Access 教案—崔学峰

图 4-27 “交叉表 查询向导 3”对话框

图 4-28 “交叉表 查询向导 4”对话框


Access 教案—崔学峰

图 4-29 “交叉表 查询向导 5”对话框

图 4-30 应用向 导建立的 “销售数 据记录 _交叉表 ”运行形 式


Access 教案—崔学峰

4.8.2 在交叉 表查询设 计视图中 修改交叉 表查询


♦ 在数据库设计视图中的查询对象选项卡上,选定刚刚应用向导建立完成的“销售数
据记录_交叉表”,单击工具栏上的“设计”按钮“”,即进入交叉表查询设计视
图,如图 4-31 所示。在这个视图中,可以看到三个用以分类的“行标题”列、一个
用以汇总的“列标题”列和一个用以计算的“值”列,这是任何一个交叉表查询的
基本组成。最后一列的作用是得到一个合计数,其字段名为“总计 销售金额 : 销售
金额”。

图 4-31 应用向 导建立的 “销售数 据记录 _交叉表 ”属性值

为了修改数字类型列的数据显示格式,先令鼠标停留在对应列的“字段”行中,再单击
工具栏上的“属性”按钮“”,在随即弹出的“字段属性”对话框中的“格式”行内,就
可以根据需要选定显示格式。
在本实例中,需要分别将“值: Sum([销售数据记录]![销售单价]*[销售数据记录]![销售
数量])”字段和“总计: Sum([销售数据记录 ]![销售单价]*[销售数据记录 ]![销售数量])”字段
的显示格式设置为“货币”格式。可以按照如下方法操作,令鼠标停留在“总计: Sum([销
售数据记录]![销售单价]*[销售数据记录]![销售数量])”字段行中,再单击工具栏上的“属性
”按钮“”,即可见到随即弹出的“字段属性”对话框。在“字段属性”对话框中的“常规
”选项卡上有一个“格式”行,单击该行右侧的列表按钮,即可从中选取“货币”格式,
如图所示,这就完成了“总计:Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数
量])”字段的显示格式设定操作。
采用同样的方法可以进行“值:Sum([销售数据记录]![销售单价]*[销售数据记录]![销售
数量])”字段的显示格式参数设置操作,即将其数据显示格式也设置为“货币”格式。
至此,一个名为“销售数据记录”的交叉表查询就按照原定的目标实现了。可以运行之,
仔细观察原定目标实现的准确性。
在进行数据库应用系统设计时,应该根据实际的系统需求在数据库中设计合适的交叉表
查询对象。
Access 教案—崔学峰

图 4-31 应用向 导建立的 “销售数 据记录 _交叉表 ”属性值

图示交叉表查询对象的 SQL 语句为:


TRANSFORM Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量]) AS 值
SELECT 销售数据记录.货号, 销售数据记录.货名, 销售数据记录.规格,
Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数量]) AS 总计
FROM 销售数据记录
GROUP BY 销售数据记录.货号, 销售数据记录.货名, 销售数据记录.规格
PIVOT 销售数据记录.销售人员;

You might also like