第9章Access理解查询操作符和表达式.docx
- 文档编号:25625521
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:44
- 大小:44.48KB
第9章Access理解查询操作符和表达式.docx
《第9章Access理解查询操作符和表达式.docx》由会员分享,可在线阅读,更多相关《第9章Access理解查询操作符和表达式.docx(44页珍藏版)》请在冰豆网上搜索。
第9章Access理解查询操作符和表达式
第9章理解查询操作符和表达式
本章要点
•理解表达式中的元素•函数
•操作符•固有的和命名常数
•算术操作符•数字、逻辑、日期/时间和字符串数据类型转换函数
•赋值和比较操作符•用于创建默认值的表达式
•逻辑操作符•用于验证数据的表达式
•标识符•用作查询准则的表达式
9.1编写表达式作为查询准则和数据验证依据
第5章“输入、编辑和验证表中的数据”中曾简要地介绍了操作符和使用操作符的表达式,
当时是在向字段添加有效性规则。
在第8章“设计Access查询”中,当为你创建的查询设计选
择准则的时候再次接触到了表达式。
另外当你在创建自定义的Access应用时,少不了要在窗体、
报表和查询中用到表达式(第12章“创建和使用窗体”和第13章“设计自定义多表窗体”中介
绍窗体;第14章“打印基本报表和邮件标签”和第15章“设计高级报表”中介绍报表;第8章和
第10章“创建多表查询和交叉表查询”中介绍查询)。
而且,当你用AccessVBA进行程序设计
的时候,会大量的使用表达式(第26章到第30章)。
因此,为了更为有效地使用Access,必须知
道如何使用Access的函数组和操作符创建简单的表达式。
如果你使用MicrosoftExcel,你可能已经对使用操作符创建表达式很熟悉了。
在电子数据
表应用中,表达式被叫做公式。
正如在第4章“Access数据库和表”中所讨论的,创建默认值
的表达式的语法,例如=Date+28,与Excel中使用的公式极为相似。
在Excel中条件表达式使
用的是=IIF函数而Access使用的是IIf函数。
本章中的很大一部分内容是去描述Access中可以用来处理数字、日期/时间和文本字段数据
类型数据的函数。
在Access的每一个元素中,函数都扮演着极为重要的角色,从表和表的字段
的有效性规则到用VBA控制程序流,都要用到各种函数。
在创建查询、窗体、报表时要用到,
在编写VBA代码时更是如此。
为了有效地使用Access2000,你必须知道哪些函数可用。
以下是Access2000中与本章有密切关系的函数和特征:
•MonthName和WeekdayName函数返回的是一个字符串,其中分别包含有地方化的(语
言或者区域相关的)月和日的名字。
•Filter、InstrRev、Join、Replace、Split和StrReverse是新的字符串操作函数。
•Round返回的是按指定小数点位数四舍五入后的数字值。
•VBA6.0添加了四个特殊的Format...函数:
FormatCurrency、FormatDateTime、
FormatNumber和FormatPercent,可以用它们替代VBA代码中普通的Format函数,但是
无法替代查询中使用的普通格式函数。
•VBA编辑器与所有使用VBA的_____Office2000成员相同,替代了Access97及其早期版本中
的模块窗口。
194第二部分最大限度地利用查询
•Access的早期版本中的Debug(调试)窗口现在叫做“立即窗口”在本章中我们将使用
VBA编辑器的“立即窗口”练习使用表达式和函数。
9.2理解表达式中的元素
一个表达式便是一个意向的声明。
如果你想让某个操作在满足某个特定的条件之后发生,
则表达式必须指定这个条件。
例如,如果要在某个查询中选择包含ZIP字段值90000或者更高的
记录,可以使用如下的表达式:
ZIP>=90000
你也可以使用表达式进行算术运算。
例如,如果在查询中需要一个ExtendedAmount字段,
可使用
ExtendedAmount:
Quantity*UnitPrice
作为表达式创建ExtendedAmount列数据单元格中的计算值。
如果能称得上一个表达式,则语句中必须至少包含一个操作符和至少一个合法的标识符或
者函数。
下面对这些元素进行描述:
•操作符包括大家熟悉的算术符号+、-、*(乘)、/(除),以及许多其他符号和缩写。
有
些操作符是特定于Access或者SQL的,例如Between、In、Is和Like操作符。
•文字由你键入的值组成,例如12345或者ABCDE。
文字常常被用来创建默认值以及与
字段标识符一起,进行表字段和查询列中值的比较。
•标识符是Access中的对象的名字(例如表中的字段),可返回唯一的数字或者文本值。
在
表达式中,术语返回的意思是用标识符的当前值代替表达式中出现的名字。
例如,字段
名字标识符CompanyName在一个表达式中返回当前所选记录的CompanyName字段的值
(一个公司的名字)。
Access具有五个预定义的命名常数,同时也作为标识符来使用:
True、False、Yes、No和Null。
在AccessVBA中创建的命名常数和变量也是标识符。
•函数在表达式中函数名字出现的位置返回一个值,例如日期和格式函数,就像第5章例
子中所用的那样。
与标识符不同,大多数函数需要提供用圆括号括起来的标识符或者值
作为参数。
在本章后面的“函数”一节将解释函数及其参数。
当文字、标识符或者函数和操作符一起使用时,这些结合被叫做操作数。
以下几节将详细
地解释表达式的这四个元素。
9.2.1操作符
Access和VBA提供了六类可以用来创建表达式的操作符:
•算术操作符执行加、减、乘、除。
•赋值和比较操作符用于值的设置和值的比较。
•逻辑操作符处理的值只有两种:
true(真)或者false(假)。
•连接操作符用以合并字符串。
•标识符操作符用以创建数据库对象的明确的名字,以便可以在不同的对象,例如表和
查询中使用相同的字段名称。
•其他操作符例如Like、Is、Between操作符,可以简化用查询选择记录时用到的表达式
的创建。
前四类操作符几乎在所有的程序设计语言中都是可用的。
标识符操作符是Access所特有的;
最后一类操作符只在可以基于结构化查询语言(SQL)或者专有查询语言创建查询的关系型数据
库管理系统(RDBMS)中是可用的。
SQL是第23章“结构化查询语言”中的主题。
以下几节解
第9章理解查询操作符和表达式195
释如何使用这些类中的每个操作符。
1.算术操作符
算术操作符只能操作数字值,并且必须具有两个数字操作数,但以下情况例外:
•当用减号(-)改变操作数的正负号。
这时,减号被叫做一元减。
•当用等号(=)向一个Access对象或者AccessVBA变量标识符赋值时。
表9-1列出了可以在Access表达式中使用的算术操作符。
表9-1算术操作符
操作符描述例子
+两个操作数相加Subtotal+Tax
-两个操作数相减Date-30
-(一元)改变一个操作数的符号-12345
*两个操作数相乘Units*UnitPrice
/用一个操作数除以另一个操作数Quantity/12.55
\用一个整数操作数除以另一个操作数Units\2
Mod返回除以另一个整数时所得到的余数UnitsMod12
^指数运算Value^Exponent
Access操作符与BASIC的所有版本中使用的操作符相同,包括VBA。
如果你不很熟悉
BASIC程序设计的话,那么下面的操作符还需要进一步的解释:
操作符描述
\整除符号与“进入”等价,就像在小学算术中叙述的那样:
3可以进入13中
4次,余数为1。
当你使用整数除的时候,带有小数部分的操作数将四舍五入
为整数,但在结果中小数部分将被截断
Mod取模的英文缩写。
该操作符返回的是整除的余数。
因此,13Mod3将返回1
^指数运算符。
第一个操作数的第二个操作数次幂。
例如,2^4或者说2的4次
幂返回16(2*2*2*2)
这三个操作符在商业应用中很少会用到,但是却常常用于AccessVBA程序代码中。
2.赋值和比较操作符
表9-1省略了与算术表达式关联的等号,因为在Access中其使用方式有两种,但无论哪一种
都不属于算术类。
等号最常用的情况是用作赋值操作符;=将单个操作数的值赋给一个Access
对象或者变量或者常数。
当使用表达式=“Q”为一个字段指定默认值的时候,等号的作用便
是赋值。
否则,=是一个比较操作符,用于确定两个操作数是否相等。
比较操作符比较两个操作数的值,并根据两个操作数和操作符之间的关系返回一个逻辑值
(True或者False)。
但是当其中的一个操作数为Null值时例外。
这时,任何比较都将返回Null值。
因为Null代表一个未知的值,所以你不能比较一个未知的值和一个确定的值而得出一个有效的
True或者False结论。
表9-2列出了在Access中可以使用的比较操作符。
表9-2比较操作符
操作符描述例子结果
<小于123<1000True
<=小于等于15<=15True
=等于2=4False
>=大于等于1234>=456True
>大于123>123False
<>不等于123<>456True
196第二部分最大限度地利用查询
比较操作符的主要用途便是创建有效性规则,为查询中记录的选择建立准则,决定宏所采
取的操作,使用SQLWHERE子句创建连接,控制AccessVBA中的程序流。
3.逻辑操作符
逻辑操作符(也叫做布尔操作符)通常用于将两个或者多个比较表达式的结果总和为一个单
个的结果。
逻辑操作符只能连接返回逻辑值True、False或者Null的表达式。
逻辑操作符总是需
要两个操作数,但Not除外,它与一元减在逻辑上是等价的。
表9-3列出的是Access的逻辑操作符。
表9-3逻辑操作符
操作符描述例子结果
And逻辑与TrueAndTrueTrue
TrueAndFalseFalse
Or逻辑或TrueOrFalseTrue
FalseOrFalseFalse
Not逻辑非NotTrueFalse
NotFalseTrue
Xor逻辑异或TrueXorFalseTrue
TrueXorTrueFalse
逻辑操作符And、Or和Not在Access表达式和SQL语句中用得较为普遍;在SQL语句中这些
操作符都是大写的,比如AND、OR和NOT。
Xor在Access中很少会用到。
Eqv(等价)和Imp
(暗示)即使在程序设计代码中也很少见到,所以在表9-3中省略了这两个操作符。
4.连接操作符
连接操作符可以将两个文本值合并为一个单独的字符串。
例如,如果你连接ABC和DEF,
其结果为ABCDEF。
连接符(&)是Access首选的连接操作符。
连接是本章“Access和VBA中的
Variant数据类型”一节中的主题之一。
提示不要在查询或者JetSQL中使用+号来连接字符串。
在JetSQL和VBA中,+被留作了数字的
相加;而使用&来连接任何字段数据类型的文字和变量。
&操作符将执行从数字到文本的隐式类
型转换;&操作符把所有的变量都当作字符串对待。
因此1234&5678将返回12345678,而不是
6912。
注意Transact-SQL,Microsoft数据引擎(MSDE)使用的SQL方言,使用+符号作为字符串连接符。
但是,SQL92规范指出两个垂直的竖条(管道符)才是正式的连接操作符,例如‘String1’||
‘String2’。
字符串连接符是大众化风格的SQL中最缺少一致性的元素之一。
5.标识符操作符
标识符操作符,“!
”(感叹号!
常常叫做结尾操作符)和“.”(句点,在Access中叫做点操作
符)是隔离符,执行操作如下:
•联合对象类的名字和对象名字以选择一个特定的对象或者某个对象的属性。
例如,如下
的表达式标识的是PersonnelActions窗体:
Forms!
PersonnelActions
这种标识方法是很有必要的,因为可能有一个表也叫PersonnelActions。
•区分对象名字和属性名字。
考虑如下的表达式:
TextBox1.FontSize=8
TextBox1是一个控件对象,而FontSize是一个属性。
•标识表中特定的字段,就像在下面的表达式中那样,用以指定Customers表的Company
Name字段:
Customers!
CompanyName
使用“!
”字符来分隔对象的引用;常规语法为ObjectClass!
ObjectName。
“.”字符用以分隔
对象和其属性或者方法,例如ObjectClass!
Object.Property或者ObjectClass!
ObjectName.Method。
6.其他操作符
其余的Access操作符都与比较操作符有关。
这些操作符根据字段中的值是否满足所选操作
符的规格而返回True或者False。
True值将导致某个记录被包含在某个查询中;False值则拒绝该
记录。
当在有效性规则中使用这些操作符时,将根据表达式所返回的逻辑值拒绝或者接受输入
的数据。
表9-4列出了在Access查询和有效性规则中使用的四个其他的操作符。
表9-4其他操作符
操作符描述例子
Is和Null一起使用,确定某值是Null还是NotIsNull
NullIsNotNull
Like确定一个字符串值是否以某个或者多个字符Like“jon*”
打头(为了使得LikeLike“FILE?
?
?
?
”
能够正确工作,必须添加通配符*或者一个或
多个?
)
In确定某个字符串是否为某个值列表中的成员In(“CA”,“OR”,“WA”)
Between确定某个数字值或者日期值是否在某个给定Between1And5
的范围之内
在Like操作符中结合使用通配符*和?
的方法与在DOS中使用它们时的方法相同。
*(常常
叫做星号)可用于表示任意数目的字符。
?
只能表示一个单个的任意字符。
例如,Like“Jon*”
在Jones或者Jonathan上都会返回True。
Like“*on*”将在任何包含on的值上返回True。
Like
“FILE?
?
?
?
”对于FILENAME将返回True,但是对于FILE000或者FILENUMBER却不会。
通配
符可以位于你想匹配的字符之前,如Like“*son”或者Like“?
?
?
?
NAME”。
除Is之外,这些其他类的操作符与SQL保留字LIKE、IN和BETWEEN是等价的。
Access
包含这些操作符是为了加强同SQL的兼容性。
你可以联合其他Access操作符或者函数创建出这
些操作符中的任何一个。
Like“Jon*”可以用AccessVBA的InStr(Left(FieldName,3),
“Jon”)来表示;In(“CA”,“OR”,“WA”)与InStr(“CAORWA”,FieldName)极为相似,只
是不会有不明确的AO和RW匹配发生。
Between1And5与>=1And<=5是等价的。
提示最好是使用Between...And,而不要使用>=和<=比较操作符来指定日期的范围。
当使用比
较操作符时,必须重复字段名字,如DateValue>=#1/1/1999#AndDateValue<=#12/31/1999#。
Between语法显得更为简短和易于理解,如DateValueBetween#1/1/1999#And#12/31/1999#。
9.2.2文字
Access提供了三种类型的文字,可以使用操作符将它们连接起来,创建出所需的表达式。
下面分别对这些文字类型进行描述:
•数字文字为一系列的数字,如果可行的话还可以包括算术符号和小数点。
其实不需要
在正数之前加上加号;Access将不出现减号的时候都假定为正值来处理。
数字文字可以
第9章理解查询操作符和表达式197
198第二部分最大限度地利用查询
包含E或者e以及指数的符号来指示科学计数法中的指数,例如,-1.23E-02。
•文本(或者字符串)文字可以包含任何可打印的字符,以及由Chr函数返回的不可打印字
符。
Chr函数将根据指定的数字值从Windows使用的ANSI字符表(与ASCII表相似)中返回
字符。
例如,Chr(9)返回Tab字符。
可打印字符包含字母A到Z、数字0到9、标点符号和其
他特殊键盘符号,例如~。
在Access表达式中,需要将文本文字包含在双引号(“”)之中。
可打印字符和不可打印字符可以用连字符(&)连接起来。
例如,在下面的表达式中,
用一个新行对将两个字符串进行了分隔:
“Firstline”&Chr(13)&Chr(10)&“Secondline”
Chr(13)是回车(CR),Chr(10)是换行(LF)符;它们一起构成了新行对。
当在表和“查询设计”网格的单元格中输入字符串文字时,Access将自动为你添加引号。
在其他地方,必须自己输入引号。
•日期/时间文字用#包围,例如表达式#1-Jan-80#或者#10:
20:
30#。
如果程序检测到你在
设计网格中输入的是一个符合Access标准“日期/时间”格式的日期或者时间,Access将
为你添加#。
9.2.3标识符
标识符通常是一个对象的名字;数据库、表、字段、查询、窗体和报表都是Access中的对
象。
每个对象都具有一个能够唯一标识该对象的名字。
有时候,为了标识一个子对象,标识符
名字中还包含家族名称(对象类),这时将使用#符号或者句点(标识符操作符)进行分隔。
标识
符的家族名称在前,然后是分隔符,在分隔符之后为给定的名字。
SQL使用句点作为对象的分
隔符。
下面是SQL语句中一个标识符的例子:
Customers.Address
在这个例子中,Address字段对象的标识符包含在Customers表对象的名称之中。
Customers是对象(表)的家族名称,Address是给定的子对象(字段)的名字。
但是,在Access
中,使用的是!
来分隔表名字和字段名(句点用于分隔对象及其属性)。
如果一个标识符中包含
空格或者其他的标点符号,必须使用方括号将标识符括起来,就像下面的例子中所示的那样:
[OrderDetails]!
Quantity
在标识符的名字中不能包含句点和感叹号,例如[Unit!
Price]是不允许的。
在只使用了一个表的简单查询中,你可以将TableName.前缀省去。
可以使用标识符来返回
窗体和报表对象中字段的值。
第12到15章讨论了标识窗体和报表中对象的特殊方法。
9.2.4函数
函数向其名字返回值;函数在表达式中占据标识符的位置。
在Access中使用的最多的一个
函数便是Now,它可以根据计算机的内部时钟向其名字返回当前的日期和时间值。
如果你在表
的日期/时间字段键入Now作为其DefaultValue属性值,例如,当你切换到数据表视图(1999年
3月15日上午9:
00)中时,在该字段中将出现3/15/999:
00。
参见26.2.3节“模块、函数和子过程”。
Access和VBA定义了大约150多个函数。
下面按其用途对这些函数进行分类:
•日期和时间函数用于操作字段中日期/时间值或者作为文字输入的日期/时间值。
你可以
用日期和时间函数提取日期部分(例如年或者月和日)和时间部分(例如小时和分钟)。
•文本操作函数用于处理字符串。
第9章理解查询操作符和表达式199
•数据类型转换函数让你来指定数字字段中值的类型,而不是依赖于Access来挑选最为
合适的数据类型。
•数学和三角函数函数执行超出标准Access算术操作符能力之外的数字值操作。
例如,你
可以使用简单的三角函数来计算三角形的边长(如果你知道一个边的长度和其内角的话)。
•金融函数与Lotus1-2-3和MicrosoftExcel提供的函数相似。
它们用于计算贬值、养老金
的值以及投资回报率。
例如,在确定25年以来的年平均发放的抽奖价值时,可以使用PV
函数。
•常规目的函数不适合于前面的任何一类;可以使用这些函数来创建Access查询、窗体和
报表。
•其他函数包含那些与其他Windows应用(DDE)、汇总函数、SQL求和函数以及主要用于
AccessVBA程序设计的函数执行动态数据交换(DDE)的函数。
在Access查询中,一般只使用前三类函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Access 理解 查询 操作 表达式