Professional Documents
Culture Documents
第四 章
应用 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-2 所示。
图 4-2 “新建查询”对话框
在“新建查询”对话框中,可以从 Access 提供的五种查询对象新建方法中选择一种。但是,
只有学会并理解了“查询设计视图”的操作使用,才可能很好地使用其他方法来加快新建
查询对象的操作。在新建查询对话框中选择“设计视图”选项,然后单击“确定”按钮“
”,即进入“查询设计视图”。由于是新建查询,所以在查询设计视图
中没有任何内容。
在查询设计视图中新建查询对象的第一步操作是指定数据源,因此,一旦由“新建查询
”对话框进入查询设计视图,Access 首先在查询设计视图中弹出“显示表”对话框,用以
提示操作者指定数据源。这时,操作者需要在“显示表”对话框中逐个地指定数据源,并单
击“添加”按钮“ ”,将指定的数据源逐个添加入查询设计视图上半部
记录查询”的第一步操作,为查询指定数据源。
上的“关闭”按钮“ ”,就完成了为查询对象指定数据源的操作。
新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查询
中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,
且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字
段排列顺序不同。这一步操作可以通过两种方法完成。
定义查 询字段的 两种方法
新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查
询中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,
且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字
段排列顺序不同。这一步操作可以通过两种方法完成。
( 1)新建包含 数据源全 部数据字 段的查询
将数据源表中的“*”符号拖曳至设计视图下部的“字段”行中;或下拉“字段”行的
列表框,从中选取“*”符号。这时,“字段”行中即出现“*”符号,“表”行中出现该
Access 教案—崔学峰
字段所在的表名,“显示”行中的复选框中出现“√”符号。这个新建的查询对象就基本完
成了,如图 4-4 所示。如此方式建立的查选对象在其运行时,将显示数据源表中所有字段中
的所有记录数据。即,符号“*”代表着全部字段。
[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 字段的名称 包含所要获取的数据
据库视图上的“打开”按钮“ ”,或双击需要打开的查询对象图标,即进
入查询视图。
图 4-7 所示即为上述“销售数据记录查询举例”对象打开后的视图。可以看到,查询视图
与数据表视图是形式完全相同的视图,不同的是查询视图中显示的是一个动态数据集。对于
本例,仅是“销售数据记录”表中的销售单价不低于 5 元的那一部分商品数据按照其销售
数量的大小降序排列而成。
Access 教案—崔学峰
4.2 基本选择查询设计
选择查询是最常见的查询类型,它从一个或多个的表中检索数据,并且允许在可以更
新记录(带有一些限制条件)的数据表中进行各种操作数据。也可以使用选择查询来对记录
进行分组,并且对记录作总计、计数、平均以及其他类型总和的计算。选择查询的优点在于能
Access 教案—崔学峰
将多个表或查询中的数据集合在一起,或对多个表或查询中的数据执行操作。
4.2.1 选择查询设计视图
4.2.2 基表联接的意义
4.2.3 排序行和显示行的作用
4.2.4 条件行的作用及其设计方法
4.2.5 “零售商店管理信息系统”中的选择查询设计
立联接,且其联接字段必须具有相同类型。如果已经在数据库设计视图指定了两个基表的联
接,则在查询设计视图中会得到继承。如果未在数据库设计视图指定两个基表的联接,则在
查询设计视图中指定的联接仅在本查询中有效。
Access 支持的联接类型有三种:只包含来自两个表的联接字段相等处的行;包括所有“
主表”的记录和那些联接字段相等的“从表”的记录;包括所有“从表”的记录和那些联
接字段相等的“主表”的记录。关于表对象联接概念中的“主表”和“从表”的含义,请参
阅第三章中的相关内容。
在上述三种联接类型中,第一种联接类型是默认类型。上述实例采用第一种联接类型,即
只显示在“库存数据记录”和“销售数据记录”中均存在的记录,如图 4-9 所示。
图 4-8 “销售数据明 细查询” 的查询视 图
1.排序的作 用与设计 方法
如同在第三章中所述,排序可以令某一列数据有顺序的排列,便于查看。在设计查询对象
时,若需要哪一列数据有顺序的排列,可单击位于该列排序行上的下拉式列表框,从中选
择所需的排序种类,如图 4-6 所示。
2.显示行的 作用与设 计方法
在查询设计视图中,显示行内是一个复选框。如果希望某一字段的数据在查询运行时得
到显示,则在该复选框中单击,使其显示有“√”符号,这也是 Access 的默认参数;如果
希望某一字段的数据在查询运行时不显示,但又需要它参与运算,则在该复选框中单击,
使其中的“√”符号消失。对于既不需要显示,也不需要参与运算的字段,根本就不要将其
选入查询中。
在查询设计视图中,令光标停留在需要设定准则的字段中的准则行内,单击查询设计视
图工具栏上的“向导”工具按钮“ ”,即弹出“表达式生成器”对话框,如图
4-10 所示。准则的设定可以在这个对话框中操作完成。
例如,如果希望查看其销售利润位于 1 元至 5 元之间的那些商品的销售数据,就应该在
“销售利润”列的准则行内输入“Between 1 And 5”这样的 VBA 表达式。这样的表达式可以
在准则行中直接输入,但不如在“表达式生成器”对话框中操作生成,请参阅图 4-10 中的
图示。
在“表达式生成器”对话框中,双击对话框左下方列表框中的“操作符”,在随之出
现的中下方列表框中选择“比较”,在对话框右下方的列表框中双击“ Between”选项,对
话框上端的文本框中即出现“ Between [表达式 1] And [表达式 2]”字样。这表明,本表达式
使用“Between”操作符。“Between”是一个双元操作符,需要为其确定两个操作数。单击“
[表达式 1]”后,在此处输入 1,即输入了第一个操作数;再单击“[表达式 2]”,在此处输入
5,即输入了第二个操作数。此时可以看到输入的表达式为“Between 1 And 5”。表达式输入
完毕后,单击对话框上的“确定”按钮“ ”,对话框消失。查询设计视图中对应准
则行上的表达式就生成了。接着,可以打开这个查询对象,与前述查询对象打开时的显示数
据进行比较,观察该准则的作用。也可以在查询设计视图中切换至 SQL 视图,仔细观察对
应的 SQL 语句。
FROM 柜存数据记录;
图 4-12 “销售数据记 录查询” 的属性设 置
4.3 实用选择查询设计
选择查询是 Access 支持的多种类型查询对象中最重要的一种,它不仅仅可以完成数据
的筛选、排序等操作,更常见的用途还在于它的计算功能、汇总统计功能以及接受外部参数
的功能。同时,选择查询还是其他类型查询创建的基础。在后续各节中我们会看到,为了创
建其他类型的查询,常常会先建立一个选择查询,然后再逐步进行设计修改,以达到实现
相关类型查询的设计结果。
4.3.1、计算查询列设计
4.3.2、汇总查询设计
4.3.3、参数查询对象设计
“零售商店管理信息系统”中的汇总查询设计
通过查询操作完成基表内部或各基表之间数据的计算,是建立查询对象的一个常用的功
能。完成计 a 达式,设置计算查询列的操作可以借助于向导在“表达式生成器”对话框中完
成。令光标停留在需要设置计算查询列的“字段”行上,单击查询设计视图工具栏上的“向
导”工具按钮“”,即弹出“表达式生成器”对话框,如图 4-10 所示。与设定查询准则的
逻辑表达式不同,计算查询列上是一个计算表达式。
图 4-8 中所示的“销售利润”列就是一个计算查询列,在这一列的“字段”行中填入
的内容为:
销售利润 : [销售单 价 ]*[销售数量 ]-[进货单价 ]*[销售数 量 ]
这个计算表达式分为用冒号隔开的两个部分。冒号右边是一个 VBA 算术表达式,它
的含义是用本查询中的“销售单价”与“销售数量”两个字段的数据之积,减去本查询中
的“进货单价”与“销售数量”两个字段的数据之积。字段名均用方括号括起来,这属于
VBA 的语法规则,必须遵循。由于所用字段都是本查询中的字段,因此不用指明其父类,
否则,需写成:[表名]![字段名]。所用到的算术运算符与其他程序设计语言使用的算术运
算符相同。
冒号左边将等同于字段名,本例中设定为“销售利润”。如果使用向导,在“表达式生成
器”对话框中完成计算表达式的设计,Access 将用“表达式 1”作为第一个计算查询列的字
段名,并依次为后续的计算查询列命名字段。
一般情况下,人们都不会满意将字段名命名为“表达式 1”这样的形式。这就需要自己来
重新给字段命名。为此,可以在“表达式生成器”对话框中完成计算表达式的设计后,单击
确定按钮退回查询设计视图后,再将“表达式生成器”自行确定的“表达式 1”修改为“销
售利润”。其操作方法是,鼠标单击字段行中的“表达式 1”,再删除该字段行中位于计算
表达式冒号左侧的字符,并输入所希望的字符串。
还可以设计计算查询列中数据的显示格式。其操作方法是,在需要重新设置显示格式的计
算查询列“字段”行处右击鼠标,在随之弹出的快捷菜单上单击【属性】;或令光标停留在
需要设置显示格式的计算查询列“字段”行上,在查询设计视图的菜单栏上单击【视图】 |
【属性】(或单击查询设计视图工具栏上“属性”工具按钮“”)。即弹出“字段属性”对话
框,如图 4-12 所示。
在“字段属性”对话框中,即可为所选字段设置包括显示格式在内的各项字段属性。图 4-
12 所示,是将“销售数据记录查询”的“销售利润”计算查询列的显示格式设置为货币格
式的参数设置操作示例。
以“销售业绩查询”为例,如果希望得到以“货名”、“规格”、“进货单价”和“销售
单价”三个字段作为分类字段的“销售数量”和“销售利润”两个字段的汇总数据,则应
将“货名”、“规格”、“进货单价”和“销售单价”四个字段均设置为分类字段,而将“
销售数量”和“销售利润”两个字段都设置为汇总数据。图 4-13 所示即为相关设计参数。三
个分类字段可以采用 4.1.1 讲述的设定字段名的方法设定,且“总计”行参数不用修改。两
个汇总字段可采用 4.3.1 节讲述的设定计算字段的方法设定,且“总计”行参数会自动根据
Access 教案—崔学峰
所设立的计算表达式而改为“Sum”或“Expression”。
图 4-13 “销售利 润明细查 询”的总 计属性设 计
销售数据记录.销售日期, 销售数据记录.销售人员
HAVING (((销售数据记录.销售日期)=[Forms]![交接班结转清]![Text29])
AND ((销售数据记录.销售人员)=[Forms]![交接班结转清]![Combo45]))
ORDER BY 柜存数据记录.货号;
2.“销售业绩查询”设计
♦ “零售商店管理信息系统”数据库中的“销售业绩查询”对象设计如图 4-16 所示。
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.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.6.3、追加 查询的实 质
查询的实质就是 SQL 语句的应用。观察“销售业绩 _追加查询”的 SQL 语句,就可以
看到,“销售业绩_追加查询”是一条用于追加数据库记录的 SQL 语句:
Access 教案—崔学峰
4.7、删除查询设计
4.7.1、删除查询的作用
4.7.2、删除查询的设计
4.7.3、删除查询的实质
4.7.1、删除 查询的作 用
如果需要从数据库的某一个数据表中有规律地成批删除一些记录,可以使用删除查询来
满足这个需求。如果将 Access 删除查询对象的功能与 xBase 所支持的相关语句做一个比较,
可以看到 Access 删除查询对象所能够实现的功能等同于 xBase 中的 Delete 语句和 Pack 语句
的组合。应用删除查询对象成批地删除数据表中的记录,应该指定相应的删除条件,否则就
会删除数据表中的全部数据。这就是说,删除查询对象必需包含有对应的删除条件,而这个
删除条件称为准则。由于 Access 删除查询对象的特点,其间包含的记录删除准则必须能够
用一个关系表达式或逻辑表达式表述。
例如,如果使用“零售商店管理信息系统”的企业已经不再经营某些商品了,且这些
商品也已经销售完毕,即其在“库存数据记录”表中的“库存数量”为零。这时,希望将这
些商品的记录从“库存数据记录”表中删除,就应该考虑建立一个删除查询来完成这项操
作。而实际上,如此确定的被删除记录显然可以用这样一个关系表达式予以描述:“ [库存
Access 教案—崔学峰
4.7.2、删除 查询的设 计
首先,创建一个选择查询,其数据源为需要从中删除记录的表对象。接着,将其中需要作
为删除准则使用的字段逐一拖曳至查询设计视图的“字段”行中。然后,单击菜单栏上的
【查询】 |
【删除查询】菜单项,即可以看到在查询设计视图中新增一个“删除”行,该行中填
有“Where”字样。这时,即可以在“删除”行下端的“准则”行中输入删除准则(当然可
以应用向导完成这项操作)。至此,所需要的删除查询即设计完毕。运行该查询,数据源表
中的满足准则条件的记录就被删除了。
下面以设计“库存数据记录 _删除查询”,使其能够删除“库存数据记录”表中那些“
库存数量”等于零的数据记录为例,说明删除查询的设计操作方法。
新建一个选择查询,指定其数据源为“库存数据记录”表对象,将“库存数据记录”表
中作为删除准则条件判断的“库存数量”字段拖曳至“字段”行中;单击菜单栏上的【查询】
|
【删除查询】 ,查询设计视图中将增加一行,其行首标题为“删除”;在新增加的“删除”
行下面的“准则”行中输入删除准则“ [库存数据记录 ]![库存数量] = 0”;即完成了“库存
数据记录_删除查询”对象的设计操作。
图示为“库存数据记录_删除查询”的查询设计视图及其各项设计参数。运行这个查询即
可删除“库存数据记录”表中那些“库存数量”为零的记录。
注意,如果有些“库存数量”等于零的数据记录不能被删除,即,尽管库存商品已经销
售完毕,但该商品还打算继续进货,继续经营。在这样的情况下,上述删除查询的设计参数
显然就不合适了。那么,这样的删除准则将如何确定呢?当然只能根据实际情况再作分析了。
4.7.3、删除 查询的实 质
查询的实质就是 SQL 语句的应用。观察“库存数据记录_删除查询”的 SQL 语句,就可
以看到,“库存数据记录_删除查询”是一条用于删除数据库记录的 SQL 语句:
DELETE 库存数据记录.库存数量
FROM 库存数据记录
WHERE (([库存数据记录]![库存数量]=0));
Access 教案—崔学峰
4.8、交叉表查询设计
交叉表查询是 Access 支持的另一类查询对象。交叉表查询显示来源于表中某个字段的总
结值(合计、计算以及平均),并将它们分组,一组列在数据表的左侧,另一组列在数据表
的上部。例如,在“零售商店管理信息系统”数据库的“销售数据记录”表中,如果希望得
到各个销售人员的销售总金额一览表,就需要应用交叉表查询来实现。可以看到,交叉表查
询运行的显示形式,是作为数据源的表转置后形成的数据表。即,将数据源表中的某一字段
数据作为交叉表查询的字段名,某几个字段数据作为分类汇总的依据,某一个字段数据被
汇总计算后显示在各自的字段下。
图 4-24 “销售数据记 录 _交叉表”的 数据表视 图
4.8.1、应用向导创建交叉表查询
4.8.2、在交叉表查询设计视图中修改交叉表查询
为了修改数字类型列的数据显示格式,先令鼠标停留在对应列的“字段”行中,再单击
工具栏上的“属性”按钮“”,在随即弹出的“字段属性”对话框中的“格式”行内,就
可以根据需要选定显示格式。
在本实例中,需要分别将“值: Sum([销售数据记录]![销售单价]*[销售数据记录]![销售
数量])”字段和“总计: Sum([销售数据记录 ]![销售单价]*[销售数据记录 ]![销售数量])”字段
的显示格式设置为“货币”格式。可以按照如下方法操作,令鼠标停留在“总计: Sum([销
售数据记录]![销售单价]*[销售数据记录]![销售数量])”字段行中,再单击工具栏上的“属性
”按钮“”,即可见到随即弹出的“字段属性”对话框。在“字段属性”对话框中的“常规
”选项卡上有一个“格式”行,单击该行右侧的列表按钮,即可从中选取“货币”格式,
如图所示,这就完成了“总计:Sum([销售数据记录]![销售单价]*[销售数据记录]![销售数
量])”字段的显示格式设定操作。
采用同样的方法可以进行“值:Sum([销售数据记录]![销售单价]*[销售数据记录]![销售
数量])”字段的显示格式参数设置操作,即将其数据显示格式也设置为“货币”格式。
至此,一个名为“销售数据记录”的交叉表查询就按照原定的目标实现了。可以运行之,
仔细观察原定目标实现的准确性。
在进行数据库应用系统设计时,应该根据实际的系统需求在数据库中设计合适的交叉表
查询对象。
Access 教案—崔学峰