CSDN博客

img wybm

ADO API 参考( ADO方法)之五

发表于2001/7/23 13:43:00  877人阅读

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 TableResync 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 不关闭 RecordsetFileName,从而可以继续使用 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 的首行。

要得到最佳结果,应使用 SaveCursorLocation 属性设置为 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 方法之前必须设置 ConnectServerSQL 属性。

如果在已经调用相同 Recordset 对象的 SubmitChanges 后调用 CancelUpdate 方法,那么 CancelUpdate 调用将由于更改已提交而失败。

仅发送已更改的记录用于修改,更改或者全部成功或者全部失败。

只能通过默认的 RDSServer.DataFactory 对象使用 SubmitChanges。自定义业务对象不能使用该方法。

Supports 方法

确定指定的 Recordset 对象是否支持特定类型的功能。

语法

boolean = recordset.Supports( CursorOptions )

返回值

返回布尔型值,指示提供者是否支持 CursorOptions 参数所标识的所有功能。

参数

CursorOptions   长整型表达式,包括一个或多个下列 CursorOptionEnum 值。

常量 说明
adAddNew 可使用 AddNew 方法添加新记录。
adApproxPosition 可读取并设置 AbsolutePositionAbsolutePage 的属性。
adBookmark 可使用 Bookmark 属性获得对特定记录的访问。
adDelete 可以使用 Delete 方法删除记录。
AdHoldRecords 可以检索多个记录或者更改下一个检索位置而不必提交所有挂起的更改。
AdMovePrevious 可使用 MoveFirstMovePrevious 方法,以及 MoveGetRows 方法将当前记录位置向后移动而不必使用书签。
AdResync 通过 Resync 方法,使用在基本的数据库中可见的数据更新游标。
AdUpdate 可使用 Update 方法修改现有的数据。
AdUpdateBatch 可以使用批更新(UpdateBatchCancelBatch 方法)将更改组传输给提供者。
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 TableUpdate Resync 动态属性,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,取决于 Update Resync 属性,执行 UpdateBatch 方法会隐性导致 Resync 方法。

0 0

相关博文

我的热门文章

img
取 消
img