excel mysql访问数据库 recordset_Access/VBA/Excel之Access单表筛选数据

该博客介绍了如何通过VBA在Excel中连接Access数据库,利用SQL语句筛选出学生信息表中语文成绩大于85分的学生记录,并将结果写入工作表。代码示例展示了SQL查询的编写方法,强调了SQL在数据筛选上的高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Part 1:目标

dba93b3073dba6ddef84258707638a9b.png
  1. 将数据库中数据表学生信息表中的语文成绩大于85分的人员信息读入当前工作簿示例工作表
  2. 逻辑过程
  • 连接数据库
  • 根据需求确定SQL语句
  • 执行SQL语句,得到recordset
  • recordset写入工作表(字段名+所有记录 列名+每一行)
  • 断开与数据库的连接
  1. 所以与上一篇文章的区别在于SQL语句

上一篇文章:Access/VBA/Excel-获取数据库数据-08

Part 2:代码

Sub test()  Dim cnn As New ADODB.Connection '连接 Dim rs As New ADODB.Recordset  Dim SQL As String Dim tblName  Dim dbAddr dbAddr = ThisWorkbook.Path & "学生信息.accdb" tblName = "学生信息表" '连接数据库 With cnn .Provider = "Microsoft.ACE.OLEDB.12.0" .Open "Data Source=" & dbAddr  End With SQL = "Select * from " & tblName & " where 语文成绩>85" Set rs = cnn.Execute(SQL)  Dim sht  Dim fildNum  Set sht = ThisWorkbook.Worksheets("示例") fildNum = rs.Fields.Count  For j = 0 To fildNum - 1 Step 1 fildName = rs.Fields(j).Name sht.Cells(1, j + 1) = fildName  Next j sht.Cells(2, 1).CopyFromRecordset rs cnn.Close  Set rs = Nothing Set cnn = NothingEnd Sub

代码截图

c70f4d2a6ab4c37f7cd8e2baa401c17a.png

Access与Excel数据对比

80717d37598d44882e1351f9f8ffa3e1.png

Part 3:部分代码解读

  1. "Select * from " & tblName & " where 语文成绩>85",中文释义:从工作表中获取满足语文成绩>85所有信息
  2. rs.Fields.Count获取字段数目
  • 字段是从0开始计数,所以最后一个字段表示为rs.Fields(rs.Fields.Count-1)
  1. rs.Fields(j).Name获取字段的名称(列名)
  2. CopyFromRecordset复制整个rs(所有记录)

联想:那么是不是还有其它筛选方式呢?那必须有,这也是SQL的强大之处,常规VBA语句需要写很多代码实现的功能,SQL一句可能就搞定了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值