ACCESS VBA编程必须掌握的聚合函数(判断 表 值).docx
5页VBA中的聚合函数及用法——如何判断表中的值?*****常用域聚合函数*****1、DCount (expr, domain, [criteria]) :确定特定记录集(一个域)中的记录数2、DSum(expr, domain, [criteria]) :计算指定记录集(一个域)中的一组值的总和3、DAvg(expr, domain, [criteria]) :计算指定记录集(一个域)中的一组值的平均值4、DMax(expr, domain, [criteria]) :计算指定记录集(一个域)中的一组值的最大值5、DMin(expr, domain, [criteria]) :计算指定记录集(一个域)中的一组值的最小值6、DLookup(expr, domain, [criteria]) :从指定记录集(一个域)中获取特定字段的值参数说明:(1) expr :一个表达式,用于标识需要返回其值的字段它既可以是用于标识表或查询中字段的字符串表达式,也可以是以该字段上的数据进行计算的表达式在 expr 中,可以包括表中字段的名称、窗体上的控件、常量或函数如果 expr 包含函数,那么它可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。
2) domain :字符串表达式,代表组成域的记录集可以是表名称或不需要参数的查询名称3)[criteria] :可选的字符串表达式,用于限制域聚合函数执行的数据范围例如,criteria 通常等价于SQL 表达式中的WHERE 子句,只是不含WHERE 关键字任何包含在criteria 中的字段必须同时也是domain 中的字段,否则Dlookup 函数将返回Null 域聚合函数示例1、利用DCount 函数统计教师人数: DCount("[ 教师编号]"," 教师")2、利用DCount 函数统计男教师人数: DCount("[ 教师编号]"," 教师","[ 教师]![性别]=' 男'")3、利用DSum 函数统计教师总教龄: DSum("year(date())-year([ 工作时间])"," 教师")4、利用DAvg 函数统计教师平均教龄: DAvg("year(date())-year([ 工作时间])"," 教师")5、利用DMax 函数统计教师最大教龄: DMax("year(date())-year([ 工作时间])"," 教师")6、利用DMin 函数统计教师最小教龄: DMin("year(date())-year([ 工作时间])"," 教师")7、利用DLookup 获取特定工作时间的教师: =DLookUp("[ 姓名]"," 教师"," 教师![工作时间]=#2000-12-13#")其它常用函数(1) 表达式中的函数—数值函数函数Abs(数值表达式) Int(数值表达式)说明返回数值表达式的绝对值abs(-1)=1返回不大于数值表达式的整数Int(9.59)=9,Int(-9.59)=-10Fix(数值表达式) 为截断取整,即去掉小数后的数Fix(±9.59)=±9Sqr (数值表达式) 返回数值表达式的平方根Cint(数值表达式) 将数值表达式转换为整数,四舍五入。
Cint(1.35)=1,Cint(1.55)=2Sgn(数值表达式) 返回数值表达式的符号值数值表达式>0,返回1;=0,返回0;<0,返回-1Sgn(5)=1,Sgn(0)=0,Sgn(-5)= -1Val(字符串表达式) 将最前面的数字字符转换为数值Val("1.2sa10") =1.2注意区别int 、fix、cint 对数字处理的结果(2) 表达式中的函数—字符函数函数SPACE(数值表达式)STRING(数值表达式, 字符串表达式) LEFT(字符串表达式, 数值表达式)RIGHT(字符串表达式,数值表达式)LEN(字符串表达式)说明返回数值表达式的值确定的空格个数组成的字符串返回由字符表达式的第一个字符重复组成的指定长度为数值表达式的值的字符串返回字符串左边的数值表达式值个字符返回字符串右边的数值表达式值个字符 返回字符串表达式的字符个数,如字符串为null,返回nullLTRIM(字符串表达式) 去掉字符串表达式左边的空格RTRIM(字符串表达式) 去掉字符串表达式右边的空格TRIM (字符串表达式) 去掉字符串表达式两边的空格Lcase(字符串表达式) 将字符串中大写字母转成小写字母Ucase(字符串表达式) 将字符串中小写字母转成大写字母MID (字符串表达式,数 返回字符串表达式从左边算起第数值表达值表达式1,数值表达 式1开始,截取长度为数值表达式2 的字符式2) 串.Chr(ASCII整数值) Asc(字符串表达式)Str(数字)函数符举例说明:返回与指定的ASCII整数值对应的字符返回字符串首字母的字符值(ASCII整数值)。
将一个数字转成字符串当数字转成字符串时,字符串的第一个位一定是空格或是正负号1、SPACE(4)=” ”四个空格2、STRING(4,”abcd”)=”aaaa”3、LEFT(2,”abcd”)=”ab”、RIGHT(2,”abcd”)=”cd”、MID(” abcd”,2,2)=”bc”4、LEN(”abcd”)=4、LEN(””)=0、LEN(null)=null5、LTRIM(“ ab ”)= “ab ”、RTRIM(“ ab ”)= “ ab”、TRIM(“ ab ”)= “ab”6、Chr(65)=A,Chr(97)=a7、Asc("A")=65,Asc("Apple")=658、Str(459)=" 459"在459 前面有一个空格,Str(-459.65)="-459.65"(4) 日期时间函数函数DAY(date)说明返回给定日期1~32的值,表示给定日期是一个月中的哪一天MONTH(date) 返回给定日期1~12的值,表示给定日期是一年中的哪个月YEAR(date) 返回给定日期100~9999的值,表示给定日期是哪一年WEEKDAY(date) 返回给定日期1~7的值,表示给定日期是一个周中的哪一天HOUR(date) 返回给定日期0~23的值,表示给定时间是一天中的哪个钟点DATE( )Time( )Now( )DateSerial(ye ar, month,day) DateDiff(interval, date1, date2)返回当前系统日期返回系统当前的时间返回系统当前的日期与时间对于指定的年、月、日,返回 Date 子类型的Variant返回两个指定日期间的时间间隔数目函数符举例说明:1、DAY(#2010-3-9#)=9、MONTH(#2010-3-9#)=3、YEAR(#2010-3-9#)=20102、WEEKDAY(#2010-3-9#)=3,注意,星期天为一周的第一天3、DATE( )= #2010-3-9#4、DateDiff(interval, date1, date2)函数,interval 参数设定值有:yyyy(年)、q(季)、m(月)、y(一年的日数)、d(日)、w(一周的日数)、ww(周)、h(时)、n(分钟)、s(秒)。
DateDiff(“m”, #2010-4-26#, #2010-5-26#)=1,DateDiff(“yyyy”,#2009-4-26#, #2010-4-26#)=1如果date1 比date2 来得晚,则DateDiff 函数的返回值为负数DateDiff(“m”, #2010-5-26#, #2010-4-26#)= -1(5) 随机函数Rnd函数必须掌握产生一定区间随机数的方法) 作用:Rnd函数返回0~1(包括0 和不包括1)之间的双精度随机数要点:怎样产生[N,M]区间的随机数?→int(N+(M-N+1)*Rnd) 例 Int(100+201*Rnd) 随机数[100,300]。





