蓝字关注,NZ9668获资料信息
《VBA代码解决方案》系列书作者
头条百家平台 VBA资深创作者
_______________________________
大家好,今日我们讲VBA解数据库解决方案的第49讲内容:从数据库中,多条件提取出数据的方法。我们利用数据库,主要的目的是存储数据,在需要的时候可以提取出来,提取的同时可以对数据进行必要的处理,本讲就是讲解从数据库中多条件提取数据的方法。
实例:我们有如下的数据库数据资料,要在其中提取出我们的数据: 
我们的目的是在其中提取出“部门”为“一厂” 并且“职务”为“班长”,同时“出生日期”在1999/6/9或之后的员工记录,该怎么解决呢?
我们分析一下:上述的要求是三个查询条件,我们可以整合在SQL语句中实现。
下面看我给出的代码:
Sub mynzRecords_49() '第49讲 从数据库中,多条件提取数据的方法
Dim cnADO, rsADO As Object
Dim strPath, strSQL, strTable As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "\mydata2.accdb"
strTable = "员工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source="& strPath
'多条件提取数据的SQL语句结构
strSQL = "select * from " & strTable _
& " where 部门='一厂' and 职务='班长' and 出生日期>=#1999/6/9#"& " ORDER BY 员工编号 DESC"
rsADO.Open strSQL, cnADO, 1, 3
Worksheets("49").Select
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
With Range(Cells(1, 1), Cells(1, rsADO.Fields.Count))
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
Range("A2").CopyFromRecordset rsADO
Columns(rsADO.Fields.Count).NumberFormat = "yyyy-mm-dd"
Columns.AutoFit
rsADO.Close
cnADO.Close
Set cnADO = Nothing
Set rsADO = Nothing
End Sub
代码截图:


代码解析:
1 '多条件提取数据的SQL语句结构
strSQL = "select * from " & strTable _
& " where 部门='一厂' and 职务='班长' and 出生日期>=#1999/6/9#"& " ORDER BY 员工编号 DESC"
在上面的代码中我们实现了提取出“部门”为“一厂” 并且“职务”为“班长”,同时“出生日期”在1999/6/9或之后的员工记录,其中
① "select* from " & strTable 是取数据库的所有字段
② " where 部门='一厂' 是部门的条件
③ and 职务='班长' 是条件职务的要求
④ and 出生日期>=#1999/6/9#" 是对出生日期的要求
⑤ ORDER BY 员工编号 DESC" 是对员工编号 的降序排列
注意点:中间的and 是连接各个条件的逻辑语言,## 是日期符号的表述
2 Range("A2").CopyFromRecordset rsADO
Columns(rsADO.Fields.Count).NumberFormat ="yyyy-mm-dd"
仍是借助于工作表条件格式的设定完成对出生日期的显示
下面看代码的运行结果:

今日内容回向:
1 如何实现多条件数据的提取?
2 数据的日期格式是如何表现的?
_____________________________
觉得有启发,点个“在看”,转给朋友们
欢迎你“留言”,和作者直接交流
更多关联阅读








