Access/VBA/Excel-多条件筛选数据-10
程序员文章站
2022-07-04 12:22:49
...
系统:Windows 7
软件:Excel 2010 / Access 2010
- 这个系列开展一个新的篇章,重点关注Access数据库
- 主体框架:以Excel作为操作界面,Access作为数据库
- 今天讲讲如何将数据库中满足要求的数据拿出来
- 涉及知识:
ADO
,SQL:Select + Where + or + and + in
Part 1:目标
- 目标1:将数据库中数据表学生信息表中的语文成绩大于85分且学号大于4的人员信息读入当前工作簿示例工作表
- 目标2:将数据库中数据表学生信息表中姓名为张三或者小红的人员信息读入当前工作簿示例工作表
- 逻辑过程
- 连接数据库
- 根据需求确定SQL语句
- 执行SQL语句,得到recordset
- 将recordset写入工作表(字段名+所有记录 即 列名+每一行)
- 断开与数据库的连接
- 实现两个目标只有SQL语句不同,其余一致
- 目标1:
SQL = "Select * from " & tblName & " where 语文成绩>85 and 学号>4"
- 目标2:
SQL = "Select * from " & tblName & " where 姓名 in('张三','小红')"
- 目标1:
目标1
目标2
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 and 学号>4"
' SQL = "Select * from " & tblName & " where 姓名 in('张三','小红')"
Set rs = cnn.Execute(SQL)
Dim sht
Dim fildNum
Set sht = ThisWorkbook.Worksheets("示例")
sht.Cells.ClearContents
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 = Nothing
End Sub
代码截图
Part 3:部分代码解读
-
SQL = "Select * from " & tblName & " where 语文成绩>85 and 学号>4"
,中文释义:从工作表中获取满足语文成绩>85且学号>4的所有信息 -
SQL = "Select * from " & tblName & " where 姓名 in('张三','小红')"
,中文释义:从工作表中获取满足姓名为张三或者小红的所有信息,也可以使用or
来实现该功能"Select * from " & tblName & " where 姓名='张三' or 姓名='小红'"
本文为原创作品,如需转载,可加小编微信号learningBin
以上为本次的学习内容,下回见
如发现有错误,欢迎留言指出
更多精彩,请关注微信公众号
扫描二维码,关注本公众号