分享

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

 L罗乐 2017-12-17

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

  • 这个系列开展一个新的篇章,重点关注Access数据库

  • 主体框架:以Excel作为操作界面,Access作为数据库

  • 今天讲讲如何将数据库中满足要求的数据拿出来

  • 涉及知识:ADOSQL:Select Where or and in

Part 1:目标

  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

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:部分代码解读

  1. SQL = 'Select * from ' & tblName & ' where 语文成绩>85 and 学号>4',中文释义:从工作表中获取满足语文成绩>85且学号>4的所有信息

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

    • 'Select * from ' & tblName & ' where 姓名='张三' or 姓名='小红''


相关文章Access/VBA/Excel-单表筛选数据-09



 

本人

                               

人生若只如初见  


何事秋风悲画扇




    

    




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多