VBA数据库解决方案第49讲:从数据库中,多条件提取出数据的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VBA数据库解决方案第49讲:从数据库中,多条件提取出数
据的方法
大家好,今日我们讲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 数据的日期格式是如何表现的?。

相关文档
最新文档