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)
