ADO API 参考( ADO方法)之三

来源:互联网 发布:it is said that 编辑:程序博客网 时间:2024/04/28 06:50

GetChunk 方法

返回大型文本或二进制数据 Field 对象的全部或部分内容 。

语法

variable = field.GetChunk( Size )

返回值

返回变体型

参数

Size   长整型表达式,等于所要检索的字节或字符数。

说明

使用 Field 对象的 GetChunk 方法检索其部分或全部长二进制或字符数据。在系统内存有限的情况下,可使用 GetChunk 方法处理部分而非全部的长整型值。

GetChunk 调用返回的数据将赋给“变量”。如果 Size 大于剩余的数据,则 GetChunk 仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则 GetChunk 方法返回 Null。

每个后续的 GetChunk 调用将检索从前一次 GetChunk 调用停止处开始的数据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ADO 将认为已从第一个字段中检索出数据。如果在第一个字段上再次调用 GetChunk 方法,ADO 将把调用解释为新的 GetChunk 操作并从记录的起始处开始读取。如果其他 Recordset 对象不是首个 Recordset 对象的副本,则访问其中的字段不会破坏 GetChunk 操作。

如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True,则可以对该字段使用 GetChunk 方法。

如果在 Field 对象上使用 Getchunk 方法时没有当前记录,将产生错误 3021(无当前记录)。

GetRows 方法

将 Recordset 对象的多个记录恢复到数组中。

语法

array = recordset.GetRows( Rows, Start, Fields )

返回值

返回二维数组。

参数

Rows    可选,长整型表达式,指定要检索记录数。默认值为 adGetRowsRest (-1)。

Start    可选,字符串长整型,计算得到在 GetRows 操作开始处的记录的书签。也可使用下列 BookmarkEnum 值。

常量说明
AdBookmarkCurrent从当前记录开始。
AdBookmarkFirst从首记录开始。
AdBookmarkLast从尾记录开始。

Fields   可选,变体型,代表单个字段名、顺序位置、字段名数组或顺序位置号。ADO 仅返回这些字段中的数据。

说明

使用 GetRows 方法可将记录从 Recordset 复制到二维数组中。第一个下标标识字段,第二个则标识记录号。当 GetRows 方法返回数据时数组变量将自动调整到正确大小。

如果不指定 Rows 参数的值,GetRows 方法将自动检索 Recordset 对象中的所有记录。如果请求的记录比可用记录多,则 GetRows 仅返回可用记录数。

如果 Recordset 对象支持书签,则可以通过传送该记录的 Bookmark 属性值,来指定 GetRows 方法将从哪个记录开始检索数据。

如要限制 GetRows 调用返回的字段,则可以在 Fields 参数中传送单个字段名/编号或者字段名/编号数组。

在调用 GetRows 后,下一个未读取的记录成为当前记录,或者如果没有更多的记录,则 EOF 属性设置为 True

GetString 方法 (ADO Recordset)

Recordset 作为字符串返回。

语法

Set Variant = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)

返回值

Recordset 按字符串值的变体型 (BSTR) 返回。

参数

StringFormat    指定 Recordset 应转换为下列格式。

常量说明
adClipString行由 RowDelimiter 分界,列由 ColumnDelimiter 分界,NULL  值由 NullExpr 分界。这三个参数只有在与 adClipString 一起时才有效。

NumRows    可选。记录集要转换的行数。如果没有指定 NumRows,或者它大于记录集的总行数,则记录集的所有行都要转换。

ColumnDelimiter    可选。如果指定则为列与列之间的分界符,否则为 TAB 字符。

RowDelimiter    可选。如果指定则为行与行之间的分界符,否则为 CARRIAGE RETURN 字符。

NullExpr    可选。如果指定则为 NULL 值处的表达式,否则为空字符串。

说明

行数据(但不是模式数据)保存在串中。因此不能使用该字符串重新打开记录集。

该方法等价于 RDO GetClipString 方法。

Item 方法

根据名称或序号返回集合的特定成员。

语法

Set object = collection.Item ( Index )

返回值

返回对象引用。

参数

Index   变体型,计算集合中对象的名称或顺序号。

说明

使用 Item 方法返回集合中的特定对象。如果方法无法在对应于 Index 参数的集合中找到对象,将产生错误。同时,某些集合不支持已命名的对象,对于这些集合,必须使用顺序号引用。

Item 方法是所有集合的默认方法;因此,下列语法形式是可互换的:

collection.Item (Index)

collection (Index)

Move 方法

移动 Recordset 对象中当前记录的位置。

语法

recordset.Move NumRecords, Start

参数

NumRecords    带符号长整型表达式,指定当前记录位置移动的记录数。

Start    可选,字符串变体型,用于计算书签。也可为下列 BookmarkEnum 值之一:

常量说明
AdBookmarkCurrent默认。从当前记录开始。
AdBookmarkFirst从首记录开始。
AdBookmarkLast从尾记录开始。

说明

所有 Recordset 对象都支持 Move 方法。

如果 NumRecords 参数大于零,则当前记录位置将向前移动(向记录集的末尾)。如果 NumRecords 小于零,则当前记录位置向后移动(向记录集的开始)。

如果 Move 调用将当前记录位置移动到首记录之前,则 ADO 将当前记录放置在记录集(BOFTrue)的首记录之前。在 BOF 属性已经为 True 时试图向后移动将产生错误。

如果 Move 调用将当前记录位置移动到尾记录之后,则 ADO 将当前记录放置在记录集(EOFTrue)的尾记录之后。在 EOF 属性已经为 True 时试图向前移动将产生错误。

从空的 Recordset 对象调用 Move 方法将产生错误。

如果传送 Start 参数,则移动相对于该书签的记录(假定 Recordset 对象支持书签)。如果没有指定,则移动相对于当前记录。

如果使用 CacheSize 属性在本地缓存来自提供者的记录,则在传送将当前记录位置移动到当前缓存的记录组之外的 NumRecords 参数时, ADO 将不得不从目标记录开始检索新的记录组。CacheSize 属性决定新检索记录组的大小,而目标记录是检索到的第一个记录。

如果 Recordset 对象是仅向前的,则用户仍然可以传送小于零的 NumRecords 参数(只要目标在已缓存记录的当前集合中)。如果 Move 调用将当前记录位置移动到第一个已缓存记录的前一个记录,将产生错误。因此可使用记录缓存,它在支持仅向前滚动的提供者上支持完全滚动。由于缓存的记录将加载到内存,因此应避免不必要地缓存过多记录。即使仅向前 Recordset 对象支持这种方式的向后移动,在任何仅向前的 Recordset 对象上调用 MovePrevious 方法仍将产生错误。

MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法

在指定 Recordset 对象中移动到第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。

语法

recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}

说明

使用 MoveFirst 方法将当前记录位置移动到 Recordset 中的第一个记录。

使用 MoveLast 方法将当前记录位置移动到 Recordset 中的最后一个记录。Recordset 对象必须支持书签或向后光标移动;否则调用该方法将产生错误。

使用 MoveNext 方法将当前记录向前移动一个记录(向 Recordset 的底部)。如果最后一个记录是当前记录并且调用 MoveNext 方法,则 ADO 将当前记录设置到 Recordset EOFTrue)的尾记录之后。当 EOF 属性已经为 True 时试图向前移动将产生错误。

使用 MovePrevious 方法将当前记录位置向后移动一个记录(向记录集的顶部)。Recordset 对象必须支持书签或向后游标移动;否则方法调用将产生错误。如果首记录是当前记录并且调用 MovePrevious 方法,则 ADO 将当前记录设置在 Recordset BOFTrue)的首记录之前。而 BOF 属性为 True 时向后移动将产生错误。如果 Recordset 对象不支持书签或向后游标移动,则 MovePrevious 方法将产生错误。

如果记录集是仅向前的,但是用户希望支持向前和向后滚动,则可以使用 CacheSize 属性创建记录缓存,通过 Move 方法支持向后游标移动。由于缓存记录是加载到内存中的,所以应避免不必要地缓存太多记录。可以调用仅向前 Recordset 对象的 MoveFirst 方法;这样做可使提供者重新执行生成 Recordset 对象的命令。

MoveFirst、MoveLast、MoveNext、MovePrevious 方法 (RDS)

在显示的记录集中移动到第一个、最后一个、下一个或前一个记录。

语法

DataControl.Recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}

参数

DataControl   对象变量,代表 RDS.DataControl 对象。

说明

可以使用 RDS.DataControl 对象的 Move 方法在 Web 页的数据绑定控件的数据记录中定位。例如,假设通过绑定到 RDS.DataControl 对象来显示网格中的记录集。然后可以加入“第一个”、“最后一个”、“下一个”或“上一个”按钮,以便用户可以单击这些按钮移动到记录集的第一个、最后一个、下一个和上一个记录。对于“第一个”、“最后一个”、“下一个”和“上一个”按钮,可分别通过调用 onClick 过程中 RDS.DataControl 对象的 MoveFirstMoveLastMoveNext MovePrevious 方法来实现。地址簿范例将说明其具体方法。

NextRecordset 方法

清除当前 Recordset 对象并通过提前执行命令序列返回下一个记录集。

语法

Set recordset2 = recordset1.NextRecordset( RecordsAffected )

返回值

返回 Recordset 对象。在语法模型中,recordset1 和 recordset2 可以是相同的 Recordset 对象,或者可以使用不同的对象。

参数

RecordsAffected    可选,长整型变量,提供者向其返回当前操作所影响的记录数目。

注意   该参数仅返回受操作影响的记录的数目;它不会从用于生成 Recordset 的选择语句返回记录的计数。

说明

使用 NextRecordset 方法返回复合命令语句中下一条命令的结果,或者是返回多个结果的已存储过程结果。如果使用 Command Execute 方法或者 Recordset Open 方法打开基于复合命令语句(例如“SELECT * FROM table1;SELECT * FROM table2”)的 Recordset 对象,则 ADO 仅执行第一条命令并将结果返回到“记录集”。要访问语句中后续命令的结果,请调用 NextRecordset 方法。

只要有其他的结果,并且包含复合语句的 Recordset 未被跨进程边界调度,则 NextRecordset 方法将继续返回 Recordset 对象。如果行返回命令没有返回记录,则返回的 Recordset 对象将为空;在确认 BOFEOF 都为 True 的情况下可验证这种情况。如果非按行返回命令成功执行,则返回的 Recordset 对象将关闭,通过测试 RecordsetState 属性可以测试这种情况。如果没有其他的结果,“记录集”将设置为 Nothing

远程数据服务用法   NextRecordset 方法对客户端的 Recordset 对象不可用。

如果在立即更新模式下进行编辑,调用 NextRecordset 方法将产生错误。应首先调用 UpdateCancelUpdate 方法。

如果需要通过填写 Parameters 集合或者通过使用原有的 OpenExecute 调用传送数组为复合语句中的多个命令传送参数,则参数在集合或数组中的次序必须与它们在命令序列中各自命令的次序相同。在读取输出参数值之前必须读取所有结果。

在调用 NextRecordset 方法时,ADO 仅执行语句中的下一条命令。如果在单步执行整个命令语句之前显式关闭 Recordset 对象,则 ADO 不执行其余的命令。