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(\工作时间])\教师\4、利用DAvg函数统计教师平均教龄: DAvg(\工作时间])\教师\5、利用DMax函数统计教师最大教龄: DMax(\工作时间])\教师\6、利用DMin函数统计教师最小教龄: DMin(\工作时间])\教师\7、利用DLookup 获取特定工作时间的教师: =DLookUp(\姓名]\教师\教师![工作时间]=#2000-12-13#\
其它常用函数
(1)表达式中的函数—数值函数 函数 Abs(数值表达式) Int(数值表达式) 说明 返回数值表达式的绝对值abs(-1)=1 返回不大于数值表达式的整数Int(9.59)=9,Int(-9.59)=-10 Fix(数值表达式) 为截断取整,即去掉小数后的数Fix(±9.59)=±9 Sqr (数值表达式) 返回数值表达式的平方根 Cint(数值表达式) 将数值表达式转换为整数,四舍五入。Cint(1.35)=1,Cint(1.55)=2 Sgn(数值表达式) 返回数值表达式的符号值。数值表达式>0,返回1;=0,返回0;<0,返回-1。Sgn(5)=1,Sgn(0)=0,Sgn(-5)= -1 Val(字符串表达式) 将最前面的数字字符转换为数值Val(\注意区别int 、fix、cint 对数字处理的结果 (2)表达式中的函数—字符函数 函数 SPACE(数值表达式) STRING(数值表达式,字符串表达式) LEFT(字符串表达式, 数值表达式) RIGHT(字符串表达式,数值表达式) LEN(字符串表达式) 说明 返回数值表达式的值确定的空格个数组成的字符串 返回由字符表达式的第一个字符重复组成的指定长度为数值表达式的值的字符串 返回字符串左边的数值表达式值个字符 返回字符串右边的数值表达式值个字符 返回字符串表达式的字符个数,如字符串为null,返回null LTRIM(字符串表达式) 去掉字符串表达式左边的空格 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)=null 5、LTRIM(“ ab ”)= “ab ”、RTRIM(“ ab ”)= “ ab”、TRIM(“ ab ”)= “ab” 6、Chr(65)=A,Chr(97)=a 7、Asc(\,Asc(\
8、Str(459)=\在459 前面有一个空格,Str(-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( ) ar, month, 返回当前系统日期 返回系统当前的时间 返回系统当前的日期与时间 Variant DateSerial(ye对于指定的年、月、日,返回 Date 子类型的 day) DateDiff(inte返回两个指定日期间的时间间隔数目 rval, date1, date2) 函数符举例说明:
1、DAY(#2010-3-9#)=9、MONTH(#2010-3-9#)=3、YEAR(#2010-3-9#)=2010
2、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]

