万和城代理VBA动态显示Recordset对象记录

万和城代理注册

【分享成果,随喜正能量】欣赏是一种享受,是一种实实在在的享受。无论何时何地,你学会了欣赏,你便收获快乐,收获温馨。懂得欣赏,你的心空便永远阳光灿烂。欣赏是一种情怀,是一种博大高雅的情怀。没有爱心的人,不懂得欣赏;缺少情趣的人,不知道欣赏。欣赏需要知本。

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第16讲:VBA动态显示Recordset对象记录。

第十六讲 动态显示Recordset对象记录的方法

大家好,今天给继续讲解VBA数据库解决方案的第16讲:动态显示每一条Recordset对象记录的方法。在上一讲中我们讲了MoveFirst,MoveLast,MoveNext,MovePrevious的定位记录的位置,今日我们继续讲解这些方法的实际应用。

实例:仍是上讲的数据库中的数据表,我们要首先显示部门为“一厂”的第一条记录,然后是最后一条记录,万和城平台主管要显示一个依照员工号显示详细信息的需求。这就是有查询的了。该怎么写代码呢?

1 显示记录集的第一条记录

代码:

Sub mynz_16_1() ‘第一条记录 第16讲:动态显示第一条Recordset对象记录的方法

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject(“ADODB.Connection”)

Set rsADO = CreateObject(“ADODB.RecordSet”)

strPath = ThisWorkbook.Path & “\mydata2.accdb”

cnADO.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strPath

strSQL = “SELECT * FROM 员工信息 WHERE 部门=’一厂'”

rsADO.Open strSQL, cnADO, 1, 3

Sheets(“16”).Select

Cells.ClearContents

For i = 0 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

rsADO.MoveFirst

For j = 0 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(2, j + 1) = rsADO.Fields(j)

Next j

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

MsgBox “ok!”

End Sub

代码解析:

1) Set cnADO = CreateObject(“ADODB.Connection”)

Set rsADO = CreateObject(“ADODB.RecordSet”)

strPath = ThisWorkbook.Path & “\mydata2.accdb”

cnADO.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strPath

strSQL = “SELECT * FROM 员工信息 WHERE 部门=’一厂'”

rsADO.Open strSQL, cnADO, 1, 3

上述代码创建了ADO对象和RecordSet对象,并打开了ADO连接,通过SQL语句,设置了打开的记录集为部门为一厂的记录集。

2) For i = 0 To rsADO.Fields.Count – 1

Sheets(“Sheet1”).Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

上述代码的意义是计入表头

3) rsADO.MoveFirst

Sheets(“Sheet1”).Rows(“2:2”).Select

Selection.ClearContents

将记录集指针移动到第一条记录,在工作表中情况待填数据的区域

4) For j = 0 To rsADO.Fields.Count – 1

Sheets(“Sheet1”).Cells(2, j + 1) = rsADO.Fields(j)

Next j

精确的记入记录

5) rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

关闭连接,释放内存。

下面看代码截图:

运行结果:

2 显示记录集的最后一条记录

代码:

Sub mynz_16_2() ‘最后一条记录 第16讲:动态显示最后一条Recordset对象记录的方法

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject(“ADODB.Connection”)

Set rsADO = CreateObject(“ADODB.RecordSet”)

strPath = ThisWorkbook.Path & “\mydata2.accdb”

cnADO.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strPath

strSQL = “SELECT * FROM 员工信息 WHERE 部门=’一厂'”

rsADO.Open strSQL, cnADO, 1, 3

Sheets(“16”).Select

Cells.ClearContents

For i = 0 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

rsADO.MoveLast

For j = 0 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(2, j + 1) = rsADO.Fields(j)

Next j

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

MsgBox “ok!”

End Sub

代码截图:

代码解读:以上代码显示记录集的最后一条记录

3 显示记录集的指定记录

下面的代码实现:当用户录入员工号码后,点击运行,会显示该员工的详细信息:

Sub mynz_16_3() ‘find 第16讲:动态显示每一条Recordset对象记录的方法

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject(“ADODB.Connection”)

Set rsADO = CreateObject(“ADODB.RecordSet”)

strPath = ThisWorkbook.Path & “\mydata2.accdb”

cnADO.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strPath

strSQL = “SELECT * FROM 员工信息 WHERE 部门=’一厂'”

rsADO.Open strSQL, cnADO, 1, 3

Sheets(“16”).Select

For i = 0 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

tt = rsADO.Fields(0)

If Sheets(“16”).Cells(2, 1) <> “” And rsADO.Fields(0) = Sheets(“16”).Cells(2, 1) Then

For j = 1 To rsADO.Fields.Count – 1

Sheets(“16”).Cells(2, j + 1) = rsADO.Fields(j)

Next j

End If

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

MsgBox “ok!”

End Sub

代码截图:

代码解读:上述代码实现了某个员工信息的精确查找。

上述三个代码基本是相同的,只是个别的语句有不同,通过代码的精确控制可以实现每个记录的控制和显示,读者在学习的时候要多加利用。

今日内容回向:

1 如何显示记录集的第一条记录?

2 如何显示记录的最后一条记录?

3 如何显示指定的记录?

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

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

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

上述教程的学习顺序:

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

0 短视频运营 抖音代运营 快手代运营 如何写脚本 如何拍视频 黄金三秒法 企业号认证 短视频剪辑 抖音破播放 公众号运营 微信代运营 代运营报价 代运营方案 阅读量推广 公众号粉丝 软文推广 品牌营销 微博代运营 小红书运营 全托管运营 一站式运营
0
0
0