![Access 2010数据库应用技术教程(第二版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/668/31729668/b_31729668.jpg)
1.6 Access 2010中的数据
作为数据库管理系统,Access中的数据也有类型之分。在设计表的过程中,相应的字段必须使用明确的数据类型,同时操作数据库的过程中会随时使用表达式和函数。
1.6.1 字段的数据类型
Access 2010中定义了12种数据类型:文本、备注、数字、日期/时间、货币、自动编号、是/否、OLE对象、超链接、附件、计算、查阅向导。字段的数据类型及其说明如表1-15所示。
表1-15 字段类型及其说明
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00040002.jpg?sign=1738889425-e6jg68yZ8hk6l0fU2c9XJg4HBhi1JvHv-0-a8fe2c28373b706c2e3747d9892dc797)
续表
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00041001.jpg?sign=1738889425-WhPkCxri6DuKH5t1Aiy7fWbbdFbaBEYC-0-210e6cd438f0e77cc499c9bbb32253cf)
1.6.2 表达式
表达式是各种数据、运算符、函数、控件和属性的组合,其运算结果是某个确定数据类型的值。表达式能实现数据计算、条件判断、数据类型转换等许多功能。在后续的内容中,许多操作如筛选条件、有效性规则、查询条件、计算控件等都要用到表达式。
1.运算符
运算符和操作数构成了表达式,运算符是用来表明运算性质的符号,它指明了多操作数进行运算的方法和规则。根据运算不同,Access中常用运算符有4种类型,即算术运算符、关系运算符、逻辑运算符和连接运算符。此外,还有特殊运算符和项目访问符。
1)算术运算符
算术运算符用于实现常见的算术运算,表1-16所示为常见的算术运算符及示例。
表1-16 常用的算术运算符及示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00041002.jpg?sign=1738889425-EQRgJU5yVXbVmBUhfvcckoGqc8hzDs5W-0-52d1c39db3fdfb90bb396451114fcd8a)
续表
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00042001.jpg?sign=1738889425-ZPQeBaytZcqNeP4aq04oa3qzrSvmqCWH-0-5c7f8b836b5b0db00044cab7c247191c)
2)关系运算符
关系运算符用于比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为True;若关系不成立,结果为False。关系运算及示例如表1-17所示。
表1-17 关系运算符及示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00042002.jpg?sign=1738889425-47ZSPa4ZlC08xUuQEQtqu4A2dDRTGD9i-0-7a5afeb02fb984346df2e9f511547c27)
关系运算的规则如下:
(1)数值型数据按数值大小比较。
(2)日期型数据按照日期的先后顺序比较,日期大则大,日期小则小。
(3)字符型数据按照字符的ASCII码值的大小从左到右一一比较,直到出现不同的字符为止。
3)逻辑运算符
逻辑运算符用于逻辑运算,主要有与(And)、或(Or)和非(Not)。逻辑运算符及示例如表1-18所示。
表1-18 逻辑运算符及示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00042003.jpg?sign=1738889425-nYf2puZDJAIEtIwLPQxqMfK63aejxDWo-0-f0ad535ca46dc40a8f930ed1b7211986)
逻辑运算符的说明如下:
(1)运算结果为逻辑值True或False。
(2)优先级不相同:Not>And>Or。
(3)可用来描述复杂的关系表达式。
注意:在数学上表示某个数在某个区域时用表达式10≤X<20,在Access中应写成X>=10 And X<20,如果写成10<=X<20的形式则是错误的。
4)连接运算符
连接运算符用于字符串连接。常见的连接运算符有“+”和“&”两个运算符。
+(连接运算):两个操作数均应为字符串类型。当两个操作数都为数字时,它就变成了加法符号,执行加法运算;当两个操作数有一个是数字,另外一个是字符时,则会出现出错信息。
&(连接运算):两个操作数既可为字符型也可为数值型。当操作数是数值型时,系统自动先将其转换为数字字符,然后进行连接操作;当两个操作数都为字符串时,两个连接符等价。
连接运算符示例如表1-19所示。
表1-19 连接运算符示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00043001.jpg?sign=1738889425-meCUk1heXnYgntO0Ruc95iBwVtRVRgry-0-658e72683dca9818b12e1246531fe7fb)
5)特殊运算符
特殊运算符及示例如表1-20所示。
表1-20 特殊运算符及示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00043002.jpg?sign=1738889425-rnBaFPMM98yogtPVP8iJ9M9qeWF0ygXt-0-e7649959ff76037177ba67680c34eae2)
6)项目访问符
此外,Access中还有一种特殊的运算符,专门用于访问数据库对象及其所属控件属性,即叹号“!”和点号“.”,一般称其为项目访问符。使用格式为:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00043003.jpg?sign=1738889425-QZbrksWk3TL5hMPxlPx02SPJ0mUp0pSq-0-bcfb7a2f23a5d934be89fe663cc356b7)
2.运算符的优先级
在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。Access 2010中常用运算符的优先级划分如表1-21所示。
表1-21 常用运算符的优先级划分
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00043004.jpg?sign=1738889425-O67R6oKsjnXaTcJswHTpD8no3N06yOAL-0-3cf2f10eb107316b06b21899ca869866)
运算符优先级说明如下:
(1)优先级:算术运算符>连接运算符>关系运算符>逻辑运算符。
(2)所有的关系运算符的优先级相同,也就是说,按从左到右顺序处理。
(3)算术运算符和逻辑运算符必须按表1-21中所列的优先顺序处理。
(4)括号优先级最高。可以用括号改变优先顺序,强令表达式的某些部分优先运行。
运算符优先级示例如表1-22所示。
表1-22 运算符优先级示例
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00044001.jpg?sign=1738889425-usouM19AZn2eN24M5V8PfoKHLZpsbaw9-0-f488966c842fecc531b120e0444da7c9)
1.6.3 函数
函数由事先定义好的一系列确定功能的语句组成,并最终返回一个确定类型的值。在后续的VBA模块实现中,也可以将一些用于实现特殊计算的表达式抽象出来自定义为函数,调用时,只需按相应的格式应用即可。Access中提供了近百个内置的标准函数,可以方便用户完成许多操作。
标准函数一般用于表达式中,有的能和语句一样使用。其使用形式如下:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00044002.jpg?sign=1738889425-PUN3NilenP86aYcEf1Yhb4H5Hyhzk6Mu-0-9efdc8e70a920260ffdad5d277762623)
其中,函数名必不可少,函数的参数放在函数名后的圆括号中,参数可以是常量、变量或表达式,可以有一个或多个,少数函数为无参函数。
使用函数一般要注意3个方面的内容,即函数名、参数和返回值。
(1)函数名起标识作用,根据名字可知其基本功能。
(2)参数就是函数名称后圆括号内的常量、变量、表达式和函数,使用时要理解其位置、类型、含义及默认值等。
(3)返回值就是函数运行后的结果,既要关注其类型,又要关注其具体值。
下面按分类介绍一些常用标准函数的使用。
1.算术函数
算术函数完成数学计算功能,主要包括以下算术函数:
(1)绝对值函数:Abs(<数值表达式>)。
功能:返回数值表达式的绝对值。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00044003.jpg?sign=1738889425-0GHxcpr9MtECwhZ8NM8bix0CzcG9pch1-0-ec52d233a91494fc0ac051780aeee6d5)
(2)向下取整函数:Int(<数值表达式>)。
功能:返回数值表达式向下取整数的结果,参数为负数时返回小于等于参数值的第一个负数。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045001.jpg?sign=1738889425-W7xuMOcThKUZs5UM6w2k2hIXW2gnCYpK-0-b531eea256d5fc70bec71962020334b4)
(3)取整函数:Fix(<数值表达式>)。
功能:返回数值表达式的整数部分,参数为负值时返回大于等于参数值的第一个负数。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045002.jpg?sign=1738889425-6FRCUkA6EEGUiFmrLPxrhsN2nXqWwss0-0-9b4947be8ff557e20dc4031ac57c9e97)
(4)四舍五入函数:Round(<数值表达式>[,<表达式>])。
功能:按照指定的小数位数进行四舍五入运算的结果。[<表达式>]是进行四舍五入运算小数点右边应保留的位数,如果省略,则为0。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045003.jpg?sign=1738889425-mz81yrCTAiVIqawWdAlJCe1bzCKeTyeh-0-1f953547ee7a87b669669a59b8993bf9)
(5)开平方函数:Sqr(<数值表达式>)。
功能:计算数值表达式的平方根。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045004.jpg?sign=1738889425-7qAlVX5G1xdrIEXZyunTVeNmcoAp5DvC-0-4458f57fbfa9868e54bab7727f8d52af)
(6)符号函数:Sgn(<数值表达式>)。
功能:返回数值表达式的符号值。当数值表达式值大于0时,返回值为1;当数值表达式值等于0时,返回值为0;当数值表达式值小于0时,返回值为-1。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045005.jpg?sign=1738889425-WfgraJxeoMbgzMdzJlJsdjvSu0Zdf2DF-0-2bbf0dc910aa53715d6a86d17384f2fc)
(7)产生随机数函数:Rnd(<数值表达式>)。
功能:产生一个[0,1)的随机数,为单精度类型。如果数值表达式值小于0,每次产生相同的随机数;如果数值表达式值大于0,每次产生新的随机数;如果数值表达式值等于0,产生最近生成的随机数,且生成的随机数序列相同;如果省略数值表达式参数,则默认参数值大于0。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00045006.jpg?sign=1738889425-pCUcdfllv282vxKqyJJCQk3d6m7fCNAB-0-c33c6c78b0bf977406121e749ced3fca)
2.字符串函数
(1)字符串检索函数:InStr([Start,]<Str1>,<Str2>[,Compare])。
功能:检索子字符串Str2在字符串Str1中最早出现的位置,返回一个整型数。Start为可选参数,为数值式,设置检索的起始位置。如省略,则从第一个字符开始检索;如包含Null值,则发生错误。Compare也为可选参数,指定字符串比较方法。值可以为1、2和0(默认)。指定0则作二进制比较,指定1则作不区分大小写的文本比较,指定2则作基于数据库中包含信息的比较。如值为Null,会发生错误。如指定了Compare参数,则Start一定要有参数。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046001.jpg?sign=1738889425-K5fPZxUlq5xCtb0QPlQ8IV922yyktGnm-0-81d1f7083a46168f816780fdebdce1f1)
(2)字符串长度检测函数:Len(<字符串表达式>)。
功能:返回字符串所含有字符数。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046002.jpg?sign=1738889425-T2jjpx93BvtjOGqmZILJr1IInz5j8pT3-0-1ae02125a93cf8b183586c9625a14e03)
(3)字符串截取函数。
Left(<字符串表达式>,N):从字符串左边起截取N个字符构成的子串。
Right(<字符串表达式>,N):从字符串右边起截取N个字符构成的子串。
Mid(<字符串表达式>,<N1>,<N2>):从字符串左边第N1个字符起截取N2个字符所构成的字符串,如果N1大于字符串的字符数,返回零长度字符串;如果省略N2,返回字符串中左边起N1个字符串开始的所有字符。
例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046003.jpg?sign=1738889425-5bWBwiY3IKymJK24EVErF3xPfTVnrrGd-0-b928d619262012728794dd3ec12d3058)
(4)生成空格字符函数:Space(<字符表达式>)。
功能:返回数值表达式的值指定的空格字符数。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046004.jpg?sign=1738889425-KDs6ygn08pR7MdfHuO9aQezmBTpaRfF2-0-6ab5d6b0d047a4cce58e86f3c784d50d)
(5)删除空格函数。
Ltrim(<字符表达式>):求字符串去掉左边空格后的字符串。
Rtrim(<字符表达式>):求字符串去掉右边空格后的字符串。
Trim(<字符表达式>):求删除前导和尾随空格符后的字符串。
例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046005.jpg?sign=1738889425-6H5efEMoASbDJ1x6TBDyobpvMh6OPvpZ-0-3c6572166793bd7d87ad247fc705f0af)
(6)大小写转换函数。
Ucase(<字符表达式>):将字符串中小写字母转换成大写字母。
Lcase(<字符表达式>):将字符串中大写字母转换成小写字母。
例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00046006.jpg?sign=1738889425-m1tKjXrxrK4phhSZ3IrDXFDg6DQvD3yq-0-25e2c44258ec691650ce14721555b2b8)
3.日期/时间函数
(1)返回系统日期和时间函数。
Date():返回当前系统日期。
Time():返回当前系统时间。
Now():返回当前系统日期和系统时间。
(2)截取日期分量函数。
Year(<日期表达式>):返回日期表达式年份的整数。
Month(<日期表达式>):返回日期表达式月份的整数。
Day(<日期表达式>):返回日期表达式日期的整数。
WeekDay(<表达式>[,W]):返回1~7的整数,表示星期几。返回的星期常数如表1-23所示。在WeekDay()函数中,参数W可以指定一个星期的第一天是星期几。默认周日是一个星期的第一天,W的值为vbSunday或1。
表1-23 星期常数
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00047001.jpg?sign=1738889425-DPQyTIha780K0f1BrnWjPZ1zaZQs5ehu-0-7b8dcbbb7434d36b71feb9c931bd53a8)
例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00047002.jpg?sign=1738889425-IdSc37kx44Yoa3BulG28r6bpm8X4rKBc-0-e8ef15eac9a4644392e41cfeab777254)
(3)返回包含指定年月日的日期函数。
DateSerial(表达式1,表达式2,表达式3):返回指定年月日的日期,其中表达式1为年,表达式2为月,表达式3为日。
注意:每个参数的取值范围应该是可接受的;即日的取值范围应在1~31之间,而月的取值范围应该在1~12之间。此外,当任何一个参数的取值范围超出可接受的范围时,它会适时进位到下一个较大的时间单位。例如,如果指定了35天,则这个天数被解释成一个月加上多出来的日数,多出来的日数将由其年份与月份来决定。
例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00047003.jpg?sign=1738889425-C18uotQc3exSunHtkFTjENiyKXZoMLgJ-0-00f1744fb807108ff89e0a03ccc675db)
4.类型转换函数
类型转换函数的功能是将数据类型转换成指定数据类型。
(1)字符串转换字符代码函数:Asc(<字符串表达式>)。
功能:返回首字符的ASCII码值。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00048001.jpg?sign=1738889425-MqF6SHTwNdoCUFyUOeYQESsP90nKB5Yf-0-1890387b2df9839a9549caa94ffe5ec4)
(2)字符代码转换字符函数:Chr(<字符代码>)。
功能:返回与字符代码相关的字符。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00048002.jpg?sign=1738889425-LJhWK6HuaubxFwcP1ModIrlI0TGatTMv-0-a1c4ff00f70e769a5c3dce392d7709a4)
(3)数字转换成字符串函数:Str(<数值表达式>)。
功能:将数值表达式值转换成字符串。注意,当一个数字转成字符串时,总会在前面保留一个空格来表示正负。表达式值为正,返回的字符串包含一个前导空格表示有正号。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00048003.jpg?sign=1738889425-CTfvvwKl3L46Defw9EVBWM6VBheqxV3b-0-852fa60caac6756a49c5bd8636eff4ec)
(4)字符串转换成数字函数:Val(<字符串表达式>)。
功能:将数字字符串转换成数值型数字。数字串转换时可自动将字符串中的空格、制表符和换行符去掉,当遇到不能识别为数字的第一个字符时,停止读入字符串。当字符串不是以数字开头时,函数返回0。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00048004.jpg?sign=1738889425-hhoQFphWl18UfiRaQqYGkTdAXLHKlTWC-0-51f21907f97058df7660bae4b51b4361)
(5)字符串转换成日期函数:DateValue(<字符串表达式>)。
功能:将字符串转换成日期值。例如:
![](https://epubservercos.yuewen.com/E610A9/17180252804504506/epubprivate/OEBPS/Images/img00048005.jpg?sign=1738889425-QCyEbp4CUaGO4g2oIhcybD1By0cR1Sk6-0-07823d195e99a37d7e2c67c74b32ca1a)