如何用ado对象访问数据库(ADO按多条件提取数据)
如何用ado对象访问数据库(ADO按多条件提取数据)Sub mynzRecords_49() '第49讲 从数据库中,多条件提取数据的方法下面看我给出的代码:实例:我们有如下的数据库数据资料,要在其中提取出我们的数据:我们的目的是在其中提取出“部门”为“三厂” 并且“职务”为“班长”,同时“出生日期”在1999/6/9或之后的员工记录,该怎么解决呢?我们分析一下:上述的要求是三个查询条件,我们可以整合在SQL语句中实现。
【分享成果,随喜正能量】 储存好你的善良,眷顾好你的坚强,善待你的勇敢,哪怕境遇越来越坏,你也会越来越好。。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:ADO按多条件提取数据
第四十九讲 从数据表中,按多条件提取数据的方法大家好,今日我们讲VBA解数据库解决方案的第49讲内容:从数据库中,多条件提取出数据的方法。我们利用数据库,主要的目的是存储数据,在需要的时候可以提取出来,提取的同时可以对数据进行必要的处理,本讲就是讲解从数据库中多条件提取数据的方法。
1 应用场景的具体分析实例:我们有如下的数据库数据资料,要在其中提取出我们的数据:
我们的目的是在其中提取出“部门”为“三厂” 并且“职务”为“班长”,同时“出生日期”在1999/6/9或之后的员工记录,该怎么解决呢?
我们分析一下:上述的要求是三个查询条件,我们可以整合在SQL语句中实现。
2 按多条件提取数据的代码及代码解读下面看我给出的代码:
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 数据的日期格式是如何表现的?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】好的生活不是拼命透支,而是款款而行。当我们被欲望追赶,步子迈得太快,就容易丧失自我。懂得给欲望做减法,学会与内心平和相处,坚守一份清醒与自持,保持自己的步调,才是真正的内心强大。平衡好自己的情绪,保持一份积极向上的心态,生活总会给我们想要的答案。。