系统:Windows 7
软件:Excel 2010 / Access 2010
这个系列开展一个新的篇章,重点关注Access数据库
主体框架:以Excel作为操作界面,Access作为数据库
今天讲讲如何将数据库中满足要求的数据拿出来
涉及知识:
ADO
,SQL:Select Where or and in
目标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
目标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
代码截图
SQL = 'Select * from ' & tblName & ' where 语文成绩>85 and 学号>4'
,中文释义:从工作表中获取满足语文成绩>85且学号>4的所有信息
SQL = 'Select * from ' & tblName & ' where 姓名 in('张三','小红')'
,中文释义:从工作表中获取满足姓名为张三或者小红的所有信息,也可以使用or
来实现该功能
'Select * from ' & tblName & ' where 姓名='张三' or 姓名='小红''
相关文章:Access/VBA/Excel-单表筛选数据-09
人生若只如初见
何事秋风悲画扇
联系客服