Excel用VBA连接Access数据库查询语句补充
“ Access数据库查询语句之分组函数和产生记录集的两种方法。”
01
—
查询语句补充
分组计算查询及生成表查询代码如下:
'一、分组计算查询:
'1.聚合函数(sum,avg,max,min,count):
'查询平均年龄和最大年龄:select avg(年龄) as 平均年龄,max(年龄) as 最大年龄 from 员工
'注:普通字段不能与聚合函数同时使用,因为记录条数对应不上,必须同分组函数配合使用
'2.分组函数(group by)
'查询每个部门的平均年龄:select 部门,avg(年龄) as 平均年龄 from 员工 group by 部门
'3.分组筛选函数(having)
'查询每个部门年龄大于35:select 部门,avg(年龄) as 平均年龄 from group by 部门 having avg(年龄)>35
'二、生成表查询:
'1.生成新表:
'将成绩大于90的结果放到名为优秀的新表中:select * into 优秀 from 成绩 where 成绩>=90
'2.添加到已有表(顺序要一致):
'将成绩在80-90的结果放在已有表(优秀)中:insert into 优秀 select * from 成绩 where 成绩 between 80 and 89
02
—
产生记录集的方法
记录集指的是使用SQL语句查询后的数据在内存占据的空间名称,以下为产生记录集的两个方法的差异代码。
'三、产生记录集的方法:
'1.使用connection对象的Execute方法产生记录集:
'set rs = con.Execute(sql)
'说明:a.获取的记录集是只读的,不能修改记录,通常用于做一些没有返回的操作
' b.不能获取记录条数
' c.EOF表示记录的结尾,BOF表示记录的开头
'if rs.EOF and rs.BOF then '如果指针即指向开头又指向结尾,则表示没有记录
'2.使用recordset对象的open方法产生记录集:
'rs.open sql,con,adopenkeyset,adlockoptimistic
'说明:a.获取的记录集是可读可写的,可以修改记录
' b.可以获取记录条数
'if rs.Recordcount <= 0 then '表示没有满足条件的记录
'recordcount表示记录条数,即行数。(msgbox rs.recordcount)