微软Ado记录集RecordSet知识点结构大全(VBA)
2021-07-27 17:17:23 0 举报
AI智能生成
微软ADO记录集RecordSet是VBA中用于操作数据库的关键对象,它提供了一种方法来检索和操作来自数据库的数据。RecordSet对象的主要功能是从数据库中获取数据,然后对这些数据进行各种操作,如添加、删除、修改和查询等。通过使用RecordSet对象的属性和方法,可以实现对数据库的高效访问和控制。在VBA编程中,掌握RecordSet对象的使用方法和技巧对于实现复杂的数据库操作至关重要。
作者其他创作
大纲/内容
事件
EndOfRecordset 事件
EndOfRecordset 事件在试图移动到超过 Recordset 结尾的行时调用。
EndOfRecordset fMoreData, adStatus, pRecordset
如果 MoveNext 操作失败,则可能发生 EndOfRecordset 事件。
FetchComplete 事件
FetchComplete 事件在长异步操作中的所有记录被检索到 Recordset 后调用。
FetchComplete pError, adStatus, pRecordset
FetchProgress 事件
FetchProgress 事件在长异步操作期间定期调用,报告提取操作当前检索到 Recordset 中的行数。
FetchProgress Progress, MaxProgress, adStatus, pRecordset
WillChangeField 和 FieldChangeComplete 事件
WillChangeField 事件在挂起操作更改 Recordset 中的一个或多个 Field 对象的值以前调用。FieldChangeComplete 事件在一个或多个 Field 对象的值更改后调用。
WillChangeField cFields, Fields, adStatus, pRecordset
FieldChangeComplete cFields, Fields, pError, adStatus, pRecordset
在用字段和值数组参数设置 Value 属性并调用 Update 方法时,可能会发生 WillChangeField 或 FieldChangeComplete 事件。
WillChangeRecord 和 RecordChangeComplete 事件
WillChangeRecord 事件在 Recordset 中的一个或多个记录(行)更改之前调用。RecordChangeComplete 事件在一个或多个记录更改之后调用
WillChangeRecord adReason, cRecords, adStatus, pRecordset
RecordChangeComplete adReason, cRecords, pError, adStatus, pRecordset
WillChangeRecordset 和 RecordsetChangeComplete 事件
WillChangeRecordset 事件在挂起的操作更改 Recordset 之前调用。RecordsetChangeComplete 事件在 Recordset 更改后调用。
WillChangeRecordset adReason, adStatus, pRecordset
RecordsetChangeComplete adReason, pError, adStatus, pRecordset
如果提供者不支持书签,则每次从提供者处检索新行时,都将发生 RecordsetChange 事件通知。
WillMove 和 MoveComplete 事件
WillMove 事件在挂起操作更改 Recordset 中的当前位置前调用。MoveComplete 事件在更改 Recordset 中的当前位置后调用。
WillMove adReason, adStatus, pRecordset
MoveComplete adReason, pError, adStatus, pRecordset
更新网址
属性/集合
AbsolutePage 属性
指示当前记录所在的页
从 1 开始,并且当前记录是 Recordset 的第一个记录时等于 1。
通过 PageCount 属性获得总页数。
AbsolutePage、PageCount 和 PageSize 属性
AbsolutePosition 属性
指示 Recordset 对象的当前记录的序号位置。
不应将 AbsolutePosition 属性作为替代的记录编号使用
删除前面的记录时,给定记录的位置将发生更改。
ActiveCommand 属性
指示 Command 对象,用于创建相关联的 Recordset 对象。
如果只给出了所产生的 Recordset 对象,请使用此属性查找相关联的 Command 对象。
ActiveCommand 属性向子例程提供一个 Recordset 对象,该对象的 ActiveCommand 属性用于显示创建 Recordset 的命令文本和参数。
ActiveConnection 属性
指示指定的 Command、Recordset 或 Record 对象当前所属的 Connection 对象。
对于打开的 Recordset 对象或其 Source 属性被设置为有效的 Command 对象的 Recordset 对象,ActiveConnection 属性为只读。否则,该属性为读/写。
如果使用 Open 方法的 ActiveConnection 参数打开 Recordset 对象,ActiveConnection 属性将继承该参数的值。
BOF 和 EOF 属性
BOF — 指示当前记录位置位于 Recordset 对象的第一个记录之前。
EOF — 指示当前记录的位置在 Recordset 对象的最后一个记录之后。
从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。
如果删除 Recordset 对象中保留的最后一个记录,BOF 和 EOF 属性将保持 False,直到重新定位当前记录为止。
本范例使用 BOF 和 EOF 属性,在用户试图移过 Recordset 的第一个或最后一个记录时显示一条消息。
Bookmark 属性
指示唯一标识 Recordset 对象中的当前记录的书签,或者将 Recordset 对象的当前记录设置为由有效书签标识的记录。
用 Bookmark 属性保存当前记录的位置并随时返回到该记录。
使用 Bookmark 和 Filter 属性来创建 Recordset 的限定视图。用户只能访问书签数组所引用的记录。
CacheSize 属性
指示在内存中本地缓存的 Recordset 对象的记录数目。
用 CacheSize 属性控制提供者一次检索到本地内存中的记录数目
不允许将 CacheSize 设置为零,否则将返回错误。
使用 CacheSize 属性显示使用和不使用缓存(大小为 30 条记录)时执行的操作在性能上的差别。
CursorLocation 属性
指示游标服务的位置。
通常情况下,可以选择客户端游标库中的游标或者选择位于服务器上的游标。
此属性在 Connection 或已关闭的 Recordset 上为读/写,在打开的 Recordset 上为只读。
CursorType 属性
指示 Recordset 对象中使用的游标的类型。
CursorType 属性在 Recordset 关闭时为读/写,在 Recordset 打开时为只读。
打开 Recordset 前设置 CursorType 和 LockType 属性。
DataMember 属性
指示要从 DataSource 属性所引用的对象中检索的数据成员的名称。
用于通过 Data Environment 创建数据绑定控件。
DataMember 和 DataSource 属性必须一起使用。
DataMember 属性确定由 DataSource 属性指定的哪个对象将被表示为 Recordset 对象。
设置此属性前必须关闭 Recordset 对象。
DataSource 属性
指示对象,其中包含要被表示为 Recordset 对象的数据。
用于通过 Data Environment 创建数据绑定控件。
Data Environment 保存数据集合(数据源),数据集合中包含将被表示为 Recordset 对象的命名对象(数据成员)。
EditMode 属性
指示当前记录的编辑状态。
此属性指示是否已对此缓冲区进行了更改,或者指示是否已创建了新记录。
EditMode 只有存在当前记录时才返回有效值。
显示不同条件下 EditMode 属性的值。
Fields 集合
Field
属性
ActualSize 属性
Attributes 属性
DefinedSize 属性
Name 属性
NumericScale 属性
OriginalValue 属性
Precision 属性
Properties 集合
Status 属性 (ADO Field)
Type 属性
UnderlyingValue 属性
Value 属性
方法
AppendChunk 方法
GetChunk 方法
Filter 属性
指示 Recordset 中的数据的过滤器。
条件字符串 — 由一个或多个用 AND 或 OR 操作符连接的单个子句组成的字符串。
书签数组 — 指向 Recordset 对象中的记录的唯一书签值数组。
使用 Filter 属性限制某个国家/地区的发行者能够看到的记录数目。
Index 属性
指示对 Recordset 对象当前生效的索引的名称。
由 Index 属性命名的索引必须已在 Recordset 对象的基本表上事先声明过。
Index 属性与 Seek 方法一起使用。
使用 Recordset 对象的 Seek 方法和 Index 属性,以及给定的 Employee ID,共同定位 Nwind.mdb 数据库 Employees 表中的雇员名。
LockType 属性
指示编辑过程中记录上的锁定类型
要确定 Recordset 对象中实际可用的锁定功能,请将 Supports 方法和 adUpdate 及 adUpdateBatch 一起使用。
打开 Recordset 前设置 CursorType 和 LockType 属性
MarshalOptions 属性
指示要调度回服务器的记录
当修改过的远程数据通过调度被更新回中间层或 Web 服务器时,设置 MarshalOptions 属性可以提高性能。
使用 MarshalOptions 属性指定发送回服务器的行(所有行或已修改的行)。
MaxRecords 属性
指示由查询返回给 Recordset 的最大记录数目。
此属性的默认设置为零,表示提供者返回所有请求的记录。
使用 MaxRecords 属性打开包含 Titles 表中 10 个最有价值标题的 Recordset。
PageCount 属性
指示 Recordset 对象包含的数据页数。
即使最后一页因为记录比 PageSize 值少而不完整,在 PageCount 值中仍作为附加页计数。
PageSize 属性
指示 Recordset 中一页包含的记录数目。
可以随时设置此属性,其值将用来计算特定页的第一个记录的位置。
AbsolutePage、PageCount 和 PageSize 属性
Properties 集合
RecordCount 属性
指示 Recordset 对象中的记录数目。
如果 Recordset 对象不支持近似定位,此属性可能会由于必须对所有记录进行检索和计数以返回精确的 RecordCount 值而严重消耗资源。
RecordCount 属性用于显示已过滤的记录集和未过滤的记录集之间的差别。
Sort 属性
指示一个或多个作为 Recordset 排序基准的字段名,并指示按升序还是降序对每个字段进行排序
如果未指定关键字,默认情况下将按升序对字段进行排序。
将 Sort 属性设置为空字符串将会把行重置为原始顺序并删除临时索引。现有的索引不会被删除。
不能将字段命名为“ASC”或“DESC”,因为这些名称与关键字 ASC 和 DESC 相冲突。
使用 Recordset 对象的 Sort 属性来调整 Recordset 中行的顺序,该 Recordset 来自 Pubs 数据库的 Authors 表。辅助实用程序例程将打印每一行。
Source 属性 (ADO Recordset)
指示 Recordset 对象的数据源。
用 Source 属性指定使用下列内容之一的 Recordset 对象的数据源:Command 对象变量、SQL 语句、存储过程或表名。
Source 属性在 Recordset 对象关闭时为读/写,在 Recordset 打开时为只读。
通过打开三个基于不同数据源的 Recordset 对象来演示 Source 属性。
State 属性
对所有适用的对象,指示该对象状态是打开的还是关闭的。
指示对所有可应用的对象执行异步方法,指示对象的当前状态是正在连接、正在执行还是正在检索。
可以随时用 State 属性确定给定对象的当前状态。
使用 State 属性来检查连接的状态。运行此过程需要 GetState 函数。
Status 属性 (ADO Recordset)
指示有关批更新或其他大量操作的当前记录的状态。
用 Status 属性查看在批更新过程中修改的记录的挂起更改。
用 Status 属性来显示在批更新发生前被批操作修改的记录。
StayInSync 属性
指示在分级 Recordset 对象中,当父行位置更改时,对基本子记录(即“子集”)的引用是否会更改。
Recordset 对象更改行位置时子集将被更新;如果为 False,则即使父 Recordset 对象已更改行位置,子集仍将继续引用以前子集中的数据。
StayInSync 属性方便地访问分级 Recordset 的行
方法
AddNew 方法
创建可更新的 Recordset 对象的新记录。
语法
recordset.AddNew FieldList, Values
如果在编辑当前记录或添加新记录时调用 AddNew,ADO 将调用 Update 方法以保存更改,然后创建新记录。
使用 AddNew 方法来创建具有指定名称的新记录
Cancel 方法
取消执行挂起的异步方法调用
语法
object.Cancel
即用 adAsyncConnect、adAsyncExecute 或 adAsyncFetch 选项调用的方法
使用 Cancel 方法,在连接繁忙时取消在 Connection 对象上执行的命令。
CancelBatch 方法
取消挂起的批更新。
语法:
recordset.CancelBatch AffectRecords
在 CancelBatch 调用后应考虑将当前记录位置设置为 Recordset 中的一个已知位置。
用 Filter 属性 (adFilterAffectedRecords) 和 Status 属性来定位发生冲突的记录。
UpdateBatch 和 CancelBatch 方法的使用
CancelUpdate 方法
在调用 Update 方法之前,取消对 Recordset 对象的当前行或新行或者 Record 对象的 Fields 集合所做的更改。
语法
recordset.CancelUpdate
record.Fields.CancelUpdate
如果调用 CancelUpdate 方法时在添加新行,调用 AddNew 之前的当前行将成为当前行。
Update 和 CancelUpdate 方法使用
Clone 方法
从现有 Recordset 对象创建一个相同的 Recordset 对象。可选择指定该副本为只读。
Set rstDuplicate = rstOriginal.Clone (LockType)
一些触发的 Recordset 事件也将在所有 Recordset 副本中触发。但是,由于当前记录可区分副本的 Recordsets,因此事件对副本可能无效。
使用 Clone 方法来创建 Recordset 的副本,然后让用户单独定位每个副本的记录指针。
Close 方法
关闭打开的对象和任何相关的对象。
object.Close
在 Recordset 对象关闭后,调用任何需要活动游标的方法都将产生错误。
如果在批更新模式下关闭 Recordset 对象,自上次 UpdateBatch 调用以来所做的更改将全部丢失。
如果使用 Clone 方法创建打开的 Recordset 对象的副本,关闭原 Recordset 或其副本不会影响任何其他副本。
已打开的 Recordset 和 Connection 对象上使用 Open 和 Close 方法。
CompareBookmarks 方法
比较两个书签并返回其相对值的说明。
result = recordset.CompareBookmarks(Bookmark1, Bookmark2)
书签仅标识 Recordset 对象中的一行。使用当前行的 Bookmark 属性可以获取其书签。
在比较书签时,ADO 并不尝试任何类型的强制措施。只是简单地将值传递给进行比较的提供者。
CompareBookmarks 方法。除了特殊的书签以外,不需要书签的相对值。
Delete 方法 (ADO Recordset)
删除当前记录或记录组。
recordset.Delete AffectRecords
使用 Delete 方法从 Recordset 中删除指定的记录。
Find 方法
在 Recordset 中搜索满足指定条件的行。可选择指定搜索方向、起始行和从起始行的偏移量
Find (Criteria, SkipRows, SearchDirection, Start)
设置行位置的任何方法(如 MoveFirst)都应在调用 Find 之前调用。
使用 Recordset 对象的 Find 方法对 Pubs 数据库中的业务标题数进行定位和计数。
GetRows 方法
将 Recordset 对象的多个记录检索到数组中
array = recordset.GetRows( Rows, Start, Fields )
第一个下标标识字段,第二个下标标识记录编号。
如果未指定 Rows 参数的值,GetRows 方法将自动检索 Recordset 对象中的所有记录
如果请求的记录多于可用的记录,GetRows 仅返回可用的记录数目。
使用 GetRows 方法从 Recordset 中检索指定数目的行,并用结果数据填充一个数组。
GetString 方法
将 Recordset 作为字符串返回。
Variant = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)
行数据(但没有模式数据)被保存在字符串中。因此不能使用此字符串重新打开 Recordset。
假设用户要调试数据访问问题,并且想用一种快速便捷的方式打印小型 Recordset 的当前内容。
Move 方法
在 Recordset 对象中移动当前记录的位置。
recordset.Move NumRecords, Start
使用 Move 方法按用户输入定位记录指针。
MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法
移动到指定的 Recordset 对象中的第一个、最后一个、下一个或上一个记录并使其成为当前记录。
recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}
使用 MoveFirst、MoveLast、MoveNext 以及 MovePrevious 方法,按照提供的命令移动 Recordset 记录指针。运行此过程需要 MoveAny 过程。
NextRecordset 方法
通过执行一系列命令清除当前 Recordset 对象并返回下一个 Recordset。
Set recordset2 = recordset1.NextRecordset( RecordsAffected )
使用 NextRecordset 方法,查看使用复合命令语句的记录集中的数据,其中的复合命令语句由三个独立 SELECT 语句组成。
Open 方法 (ADO Recordset)
打开游标。
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
在 Recordset 对象上使用 Open 方法打开游标,该游标表示基本表中的记录、查询的结果或以前保存的 Recordset。
在已打开的 Recordset 和 Connection 对象上使用 Open 和 Close 方法。
Requery 方法
通过重新执行对象所基于的查询来更新 Recordset 对象中的数据
recordset.Requery Options
Resync 方法
从基本数据库刷新当前 Recordset 对象中的数据或 Record 对象的 Fields 集合。
Recordset.Resync AffectRecords, ResyncValues
Record.Fields.Resync ResyncValues
如果正在使用静态或仅向前游标,但是想查看基本数据库中的所有更改,上述操作将大有用处。
用 Resync 方法使 Record 对象的 Fields 集合的值与基本数据源重新同步。
使用 Resync 方法来刷新静态记录集中的数据
Save 方法
将 Recordset 保存在文件或 Stream 对象中。
recordset.Save Destination, PersistFormat
连接数据库并用旅途中所做的更改对其进行更新。
Seek 方法
搜索 Recordset 的索引以快速定位与指定的值相匹配的行,并使其成为当前行。
recordset.Seek KeyValues, SeekOption
执行此方法前,请先将 Index 属性设置为所需的索引。
使用 Recordset 对象的 Seek 方法和 Index 属性,以及给定的 Employee ID,共同定位 Nwind.mdb 数据库 Employees 表中的雇员名。
Supports 方法
确定指定的 Recordset 对象是否支持特定类型的功能。
boolean = recordset.Supports( CursorOptions )
使用 Supports 方法来显示用不同游标类型打开的记录集所支持的选项。
Update 方法
保存对 Recordset 对象的当前行或者 Record 对象的 Fields 集合所做的更改。
recordset.Update Fields, Values
record.Fields.Update
如果调用 Update 方法前在正在添加或编辑的记录中移动,ADO 将自动调用 Update 保存更改。
Update 和 CancelUpdate 方法使用
UpdateBatch 方法
将所有挂起的批更新写入磁盘。
recordset.UpdateBatch AffectRecords
如果 Recordset 对象支持批更新,在调用 UpdateBatch 方法之前,可以把对一个或多个记录所做的多个更改在本地缓存。
UpdateBatch 和 CancelBatch 方法使用
0 条评论
下一页