Resync 方法
从基本数据库刷新当前 Recordset 对象中的数据。
语法
recordset.Resync AffectRecords, ResyncValues
参数
AffectRecords 可选,AffectEnum 值,决定 Resync 方法所影响的记录数目,可以为下列常量之一。
常量
说明
AdAffectCurrent
只刷新当前记录。
AdAffectGroup
刷新满足当前 Filter 属性设置的记录。只有将 Filter 属性设置为有效预定义常量之一才能使用该选项。
AdAffectAll
默认值。刷新 Recordset 对象中的所有记录,包括由于当前 Filter 属性设置而隐藏的记录。
adAffectAllChapters
刷新所有子集记录。
ResyncValues 可选,ResyncEnum 值。指定是否覆盖基本值。可为下列常量之一。
常量
说明
AdResyncAllValues
默认值。覆盖数据,取消挂起的更新。
AdResyncUnderlyingValues
不覆盖数据,不取消挂起的更新。
说明
使用 Resync 方法将当前 Recordset 中的记录与基本的数据库重新同步。这在使用静态或仅向前的游标但希望看到基本数据库中的改动时十分有用。
如果将 CursorLocation 属性设置为 adUseClient,则 Resync 仅对非只读的 Recordset 对象可用。
与 Requery 方法不同,Resync 方法不重新执行 Recordset 对象的基本的命令,基本的数据库中的新记录将不可见。
如果由于与基本的数据冲突(如其他用户已将记录删除)而使重新同步的尝试失败,则提供者将警告返回到 Errors 集合并且产生运行时错误。使用 Filter 属性 (adFilterConflictingRecords) 和 Status 属性可以找到发生冲突的记录。
远程数据服务用法 Resync 方法在客户端 Recordset 上无效。
如果设置了 Unique Table 和 Resync Command 动态属性,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,Resync 方法将仅对 Unique Table 属性中命名的表执行在 Resync Command 属性中所给定的操作。
Save 方法 (ADO Recordset)
将 Recordset 保存(持久)在文件中。
语法
recordset.Save FileName, PersistFormat
参数
FileName 可选。文件的完整路径名,用于保存 Recordset。
PersistFormat 可选。PersistFormatEnum 值,指定保存 Recordset 所使用的格式。可以是如下的某个常量:
常量
说明
adPersistADTG
(默认)使用专用的“Advanced Data Tablegram”格式保存。
adPersistXML
使用 XML 格式保存。
说明
只能对打开的 Recordset 调用 Save 方法。随后使用 Open 方法可由 FileName 恢复 Recordset。
如果 Filter 属性影响 Recordset,将只保存经过筛选的行。如果 Recordset 是分级结构的,那么将保存当前子 Recordset 和它的子 Recordset,但不保存上一级 Recordset。
在第一次保存 Recordset 时指定 FileName。如果随后调用 Save 时,应忽略 FileName,否则将产生运行时错误。如果随后使用新的 FileName 调用 Save,那么 Recordset 将保存到新的文件中,但新文件和原始文件都是打开的。
Save 不关闭 Recordset 或 FileName,从而可以继续使用 Recordset 并保存最新的更改。在 Recordset 关闭之前 FileName 将保持打开,在这段时间其它应用程序可以读取但不能写入 FileName。
出于安全的原因,对由 Microsoft Internet Explorer 执行的脚本,Save 方法仅允许使用低的和自定义的安全设置。有关安全问题的详细解释,请参阅 在 http://www.microsoft.com/data/techmat.htm 上的白皮书标题“Security Issues in the Microsoft Internet Explorer”。
如果正在进行异步 Recordset 获取、执行或更新操作时调用 Save 方法,则 Save 将进入等待状态,直到异步操作完成。
在 Save 方法完成后,当前行位置将成为 Recordset 的首行。
要得到最佳结果,应使用 Save 将 CursorLocation 属性设置为 adUseClient。如果您的提供者不支持用于保存 Recordset 对象的所需功能,则客户端游标将提供该功能。
Seek 方法
搜索 Recordset 的索引,快速定位与指定值相匹配的行,并将当前行更改为该行。
语法
recordset.Seek KeyValues, SeekOption
参数
KeyValues VARIANT 值的数组。索引由一个或多个列组成,而数组包含与每个对应列进行比较的值。
SeekOption SeekEnum 只值,指定在索引的列和对应的 KeyValues 之间进行的比较的类型。可以是如下某个比较常量:
常量
说明
AdSeekAfterEQ
查找等于 KeyValues 的关键字,或仅在已经匹配过的位置之后进行查找。
AdSeekAfter
仅在已经有过与 KeyValues 匹配的位置之后进行查找。
AdSeekBeforeEQ
查找等于 KeyValues 的关键字,或仅在已经匹配过的位置之前进行查找。
AdSeekBefore
仅在已经有过与 KeyValues 匹配的位置之前进行查找。
AdSeekFirstEQ
查找等于 KeyValues 的第一个关键字。
AdSeekLastEQ
查找等于 KeyValues 的最后一个关键字。
说明
如果基本提供者支持对 Recordset 对象使用索引,请结合 Index 属性使用 Seek 方法。请使用 Supports (adIndex) 方法判断基本提供者是否支持索引。
如果 Seek 没有找到想要的行,则不发生错误,并且行被定位于 EOF。请在执行该方法之前,将 Index 属性设置为所需索引。
该方法只能用于当 Recordset 对象的 CursorLocation 属性的值不是 adUseClient 时。
SubmitChanges 方法 (RDS)
将本地缓存的可更新 Recordset 的挂起更改提交到在 Connect 属性中指定的 ODBC 数据源中。
语法
DataControl.SubmitChanges
DataFactory.SubmitChanges Connection, Recordset
参数
DataControl 对象变量,代表 RDS.DataControl 对象。
DataFactory 对象变量,代表 RDSServer.DataFactory 对象。
Connection 字符串值,代表用 RDS.DataControl 对象的 Connect 属性创建的连接。
Recordset 对象变量,代表 Recordset 对象。
说明
在使用 RDS.DataControl 对象的 SubmitChanges 方法之前必须设置 Connect、Server 和 SQL 属性。
如果在已经调用相同 Recordset 对象的 SubmitChanges 后调用 CancelUpdate 方法,那么 CancelUpdate 调用将由于更改已提交而失败。
仅发送已更改的记录用于修改,更改或者全部成功或者全部失败。
只能通过默认的 RDSServer.DataFactory 对象使用 SubmitChanges。自定义业务对象不能使用该方法。
Supports 方法
确定指定的 Recordset 对象是否支持特定类型的功能。
语法
boolean = recordset.Supports( CursorOptions )
返回值
返回布尔型值,指示提供者是否支持 CursorOptions 参数所标识的所有功能。
参数
CursorOptions 长整型表达式,包括一个或多个下列 CursorOptionEnum 值。
常量
说明
adAddNew
可使用 AddNew 方法添加新记录。
adApproxPosition
可读取并设置 AbsolutePosition 和 AbsolutePage 的属性。
adBookmark
可使用 Bookmark 属性获得对特定记录的访问。
adDelete
可以使用 Delete 方法删除记录。
AdHoldRecords
可以检索多个记录或者更改下一个检索位置而不必提交所有挂起的更改。
AdMovePrevious
可使用 MoveFirst 和 MovePrevious 方法,以及 Move 或 GetRows 方法将当前记录位置向后移动而不必使用书签。
AdResync
通过 Resync 方法,使用在基本的数据库中可见的数据更新游标。
AdUpdate
可使用 Update 方法修改现有的数据。
AdUpdateBatch
可以使用批更新(UpdateBatch 和 CancelBatch 方法)将更改组传输给提供者。
AdIndex
可以使用 Index 属性命名索引。
AdSeek
可以使用 Seek 方法定位 Recordset 中的行。
说明
使用 Supports 方法确定 Recordset 对象所支持的功能类型。如果 Recordset 对象支持其相应常量在 CursorOptions 中的功能,那么 Supports 方法返回 True。否则返回 False。
注意 尽管 Supports 方法可对给定的功能返回 True,但它不能保证提供者可以使功能在所有环境下均有效。Supports 方法只返回提供者是否支持指定的功能(假定符合某些条件)。例如,Supports 方法可能指示 Recordset 对象支持更新(即使游标基于多个表的合并),但并且某些列仍然无法更新。
Update 方法
保存对 Recordset 对象的当前记录所做的所有更改。
语法
recordset.Update Fields, Values
参数
Fields 可选。变体型,代表单个名称;或变体型数组,代表需要修改的字段(一个或多个)名称及序号位置。
Values 可选。变体型,代表单个值;或变体型数组,代表新记录中字段(单个或多个)值。
说明
使用 Update 方法保存自调用 AddNew 方法或更改现有记录中任何字段值以来所作的所有更改。Recordset 对象必须支持更新。
要设置字段值,请进行下列某项操作:
为 Field 对象的 Value 属性赋值,并调用 Update 方法。
在 Update 调用中传送字段名和值作为参数。
在 Update 调用中传送字段名数组和值数组。
在使用字段和值的数组时,两个数组中必须有相等数量的元素,同时字段名的次序必须匹配字段值的次序。字段和值的数量及次序不匹配将产生错误。
如果 Recordset 对象支持批更新,那么可以在调用 UpdateBatch 方法之前将一个或多个记录的多个改动缓存在本地。如果在调用 UpdateBatch 对象时正在编辑当前记录或者添加新的记录,那么 ADO 将自动调用 Update 方法以便在将批更改传送到提供者之前保存挂起的更改。
如果在调用 Update 方法之前移动出正在添加或编辑的记录,那么 ADO 将自动调用 Update 以便保存更改。如果希望取消对当前记录所做的任何更改或者放弃新添加的记录,则必须调用 CancelUpdate 方法。
在调用 Update 方法后当前记录仍为当前记录。
如果设置了 Unique Table 动态属性,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,Update 方法将无法更新多个表的任何主要关键字。此外,Update 只能更新在 Unique Table 属性中指定的表中的字段。
UpdateBatch 方法
将所有挂起的批更新写入磁盘。
语法
recordset.UpdateBatch AffectRecords
参数
AffectRecords 可选,AffectEnum 值。决定 UpdateBatch 方法所影响的记录数目。可以为如下常量之一。
常量
说明
adAffectCurrent
只写入当前记录的挂起更改。
adAffectGroup
写入满足当前 Filter 属性设置的记录所发生的挂起更改。必须将 Filter 属性设置为某个有效的预定义常量才能使用该选项。
adAffectAll
(默认值)。写入 Recordset 对象中所有记录的挂起更改,包括由于当前 Filter 属性设置而隐藏的任何记录。
adAffectAllChapters
写入所有子集的挂起更改。
说明
按批更新模式修改 Recordset 对象时,使用 UpdateBatch 方法可将 Recordset 对象中的所有更改传递到基本数据库。
如果 Recordset 对象支持批更新,那么可以将一个或多个记录的多重更改缓存在本地,然后再调用 UpdateBatch 方法。如果在调用 UpdateBatch 方法时正在编辑当前记录或者添加新的记录,那么在将批更新传送到提供者之前,ADO 将自动调用 Update 方法保存对当前记录的所有挂起更改。
注意 只能对键集或静态游标使用批更新。
如果由于与基本的数据冲突而导致对所有或任意记录的传送更改失败(如其他用户已将记录删除),那么提供者将把警告返回给 Errors 集合,并发生运行时错误。使用 Filter 属性 (adFilterAffectedRecords) 和 Status 属性可以找到发生冲突的记录。
要取消所有挂起的批更新,请使用 CancelBatch 方法。
如果设置了 Unique Table 和 Update Resync 动态属性,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,取决于 Update Resync 属性,执行 UpdateBatch 方法会隐性导致 Resync 方法。