快捷搜索:  汽车  科技

如何用ado对象访问数据库(ADO按多条件提取数据)

如何用ado对象访问数据库(ADO按多条件提取数据)Sub mynzRecords_49() '第49讲 从数据库中,多条件提取数据的方法下面看我给出的代码:实例:我们有如下的数据库数据资料,要在其中提取出我们的数据:我们的目的是在其中提取出“部门”为“三厂” 并且“职务”为“班长”,同时“出生日期”在1999/6/9或之后的员工记录,该怎么解决呢?我们分析一下:上述的要求是三个查询条件,我们可以整合在SQL语句中实现。

【分享成果,随喜正能量】 储存好你的善良,眷顾好你的坚强,善待你的勇敢,哪怕境遇越来越坏,你也会越来越好。。 ​​

《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:ADO按多条件提取数据

如何用ado对象访问数据库(ADO按多条件提取数据)(1)

第四十九讲 从数据表中,按多条件提取数据的方法

大家好,今日我们讲VBA解数据库解决方案的第49讲内容:从数据库中,多条件提取出数据的方法。我们利用数据库,主要的目的是存储数据,在需要的时候可以提取出来,提取的同时可以对数据进行必要的处理,本讲就是讲解从数据库中多条件提取数据的方法。

1 应用场景的具体分析

实例:我们有如下的数据库数据资料,要在其中提取出我们的数据:

如何用ado对象访问数据库(ADO按多条件提取数据)(2)

我们的目的是在其中提取出“部门”为“三厂” 并且“职务”为“班长”,同时“出生日期”在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

代码截图:

如何用ado对象访问数据库(ADO按多条件提取数据)(3)

代码解读:

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"

仍是借助于工作表条件格式的设定完成对出生日期的显示

下面看代码的运行结果:

如何用ado对象访问数据库(ADO按多条件提取数据)(4)

今日内容回向:

1 如何实现多条件数据的提取?

2 数据的日期格式是如何表现的?

本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm

如何用ado对象访问数据库(ADO按多条件提取数据)(5)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

如何用ado对象访问数据库(ADO按多条件提取数据)(6)

如何用ado对象访问数据库(ADO按多条件提取数据)(7)

如何用ado对象访问数据库(ADO按多条件提取数据)(8)

【分享成果,随喜正能量】好的生活不是拼命透支,而是款款而行。当我们被欲望追赶,步子迈得太快,就容易丧失自我。懂得给欲望做减法,学会与内心平和相处,坚守一份清醒与自持,保持自己的步调,才是真正的内心强大。平衡好自己的情绪,保持一份积极向上的心态,生活总会给我们想要的答案。。

猜您喜欢: