dataset的数据存在哪:Recordset对象记录的位置移动

时间:2024-03-30 11:24:18/人气:115 ℃

【分享成果,随喜正能量】人生的一切不是算来的,而是善来的;不是求来的,而是修来的。胸襟的宽窄,决定命运的格局,你能包容多少,就能拥有多少。凡事看得开、想得透、拿得起、放得下,学会隐忍性情,懂得克制欲望,退却时理智,谦让时大度,除却杂念私心,少些攀比计较,才会随缘自适。

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

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

第十七讲 Recordset对象记录位置的定位方法

大家好,今天给继续讲解VBA数据库解决方案的第17讲:Recordset对象记录位置的定位方法。在上一讲中我们讲了MoveFirs,MoveLast,MoveNext,MovePrevious的精准定位方法,对于数据库的操作,大段的代码是很常见的,要记得我以前的建议,不要手工去录入,要利用资料去修正代码,今日我们讲解记录定位的其他常见的方法。

1 Move方法

Move方法可以移动Recordset 对象中当前记录的位置。

语法;recordset.Move NumRecords, Start

参数:

a: NumRecords 长整型,指定当前记录位置移动的记录数。

b: Start 可选,字符串或变体型,指定从哪儿开始移动。也可为下值之一:

AdBookmarkCurrent(0) 默认。从当前记录开始。

AdBookmarkFirst(1) 从首记录开始。

AdBookmarkLast(2) 从尾记录开始。

Sub mynz_17() '测试数据 第17讲: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("17").Select

Cells.ClearContents

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

Sheets("17").Cells(1, i 1) = rsADO.Fields(i).Name

Next i

rsADO.MoveFirst

rsADO.Move 2, 0

Sheets("17").Rows("2:2").Select

Selection.ClearContents

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

Sheets("17").Cells(2, j 1) = rsADO.Fields(j)

Next j

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

MsgBox "ok!"

End Sub

代码截图:

代码解读:

对于其他的地方,我在上一讲已经非常详细的讲过了,只对下面的代码做一下说明:

rsADO.MoveFirst

rsADO.Move 2, 0

我们首先要把代码移动到第一条记录,让后向下移动,从当前记录即第一个记录开始移动,每次移动两个记录,然后显示记录的内容。

下面我们测试一下,先看看整个的记录集:

那么经过记录的移动后,应该为绿色框的数据,是不是呢?我们看看本程序的运行结果:

结果显示和我们当初的预想是一致的。

2 在Recordset对象中定位游标位置的其他办法

1) 使用Recordset 对象的AbsolutePosition 属性。

AbsolutePosition属性可以设置或返回游标当前的记录位置。下面代码将游标当前位置保存在变量myc中,然后设置为第10条记录:

myc = rst.AbsolutePosition

rst.AbsolutePosition = 10

2) 使用Recordset 对象的Bookmark属性。

Bookmark属性可以设置或返回游标当前当前记录的书签。Recordset 对象的每一条记录都有唯一的“书签”值。下面代码先将游标当前位置设置为第10条记录,然后将当前记录的书签保存到变量myc中,然后移动到下一条记录(实际使用时一般是进行其它的处理操作),最后在通过设置Bookmark属性将记录定位到原来的第10条记录。

rst.AbsolutePosition = 10

myc = rst.Bookmark

rst.MoveNext

rst.Bookmark =myc

与使用AbsolutePosition 属性的区别是,使用Bookmark属性时,往往不知道或不关心记录所处的实际位置。

后两种方法的实例就不再演示了,以后如果有用到的再说明。

今日内容回向:

1 Recordset对象的定位都有哪些方法?本讲重点讲了什么方法?

2 如何理解recordset.Move的参数NumRecords, Start呢?

本讲内容参考程序文件: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

推荐

  • 1如何用腹式呼吸法消除声音发抖的技巧440
  • 2真情在身边高二抒情作文750字313
  • 3自我介绍一百字作文范文五篇208
  • 4国内突发性公共卫生事件应急处理困境与建议论文414
  • 5简单水果生日蛋糕图片238
  • 6真实的我270
  • 72010年9月大学生入党思想汇报:提高自己的思想层次490
  • 8男性适宜练习什么瑜伽的动作374
  • 9车用油膜去除剂靠谱吗?油膜去除剂到底有没有效果425
  • 10数码宝贝十大究极体进化最后一战 数码宝贝能吃掉梦的数码兽447
  • 首页/电脑版/地图
    © 2024 OONiu.Com All Rights Reserved.