Access/VBA/Excel-多条件筛选数据-10

来源:互联网 发布:mac口红销量前三的颜色 编辑:程序博客网 时间:2024/06/06 14:52

微信公众号原文

系统:Windows 7
软件:Excel 2010 / Access 2010

  • 这个系列开展一个新的篇章,重点关注Access数据库
  • 主体框架:以Excel作为操作界面,Access作为数据库
  • 今天讲讲如何将数据库中满足要求的数据拿出来
  • 涉及知识:ADOSQL:Select + Where + or + and + in

Part 1:目标

1.png

  1. 目标1:将数据库中数据表学生信息表中的语文成绩大于85分且学号大于4的人员信息读入当前工作簿示例工作表
  2. 目标2:将数据库中数据表学生信息表中姓名为张三或者小红的人员信息读入当前工作簿示例工作表
  3. 逻辑过程
    • 连接数据库
    • 根据需求确定SQL语句
    • 执行SQL语句,得到recordset
    • recordset写入工作表(字段名+所有记录 列名+每一行)
    • 断开与数据库的连接
  4. 实现两个目标只有SQL语句不同,其余一致
    • 目标1:SQL = "Select * from " & tblName & " where 语文成绩>85 and 学号>4"
    • 目标2:SQL = "Select * from " & tblName & " where 姓名 in('张三','小红')"

目标1
2.png

目标2
3.png

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 = NothingEnd Sub

代码截图
4.png

Part 3:部分代码解读

  1. SQL = "Select * from " & tblName & " where 语文成绩>85 and 学号>4",中文释义:从工作表中获取满足语文成绩>85且学号>4的所有信息
  2. SQL = "Select * from " & tblName & " where 姓名 in('张三','小红')",中文释义:从工作表中获取满足姓名为张三或者小红的所有信息,也可以使用or来实现该功能
    • "Select * from " & tblName & " where 姓名='张三' or 姓名='小红'"

本文为原创作品,如需转载,可加小编微信号learningBin

以上为本次的学习内容,下回见

如发现有错误,欢迎留言指出


更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg