vlambda博客
学习文章列表

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)