Field
对象
表示公共数据类型的数据列。
说明
每个 Field 对象都对应于 Recordset 中的一列。使用 Field 对象的 Value 属性来设置或返回当前记录的数据。 Field 对象的某些集合、方法或属性可能不可用,这取决于提供者提供的功能。
用 Field 对象的集合、方法和属性可以执行下列操作:
用 Name 属性返回字段名。
用 Value 属性查看或更改字段中的数据。 Value 为 Field 对象的默认属性。
用 Type 、 Precision 和 NumericScale 属性返回字段的基本特性。
用 DefinedSize 属性返回已声明的字段大小。
用 ActualSize 属性返回给定字段中的数据的实际大小。
用 Attributes 属性和 Properties 集合确定给定字段支持的功能类型。
用 AppendChunk 和 GetChunk 方法对包含长二进制或长字符数据的字段值进行操作。
如果提供者支持批更新,请用 OriginalValue 和 UnderlyingValue 属性在批更新过程中解决字段值之间的差异。
在打开 Field 对象的 Recordset 之前,所有元数据属性( Name 、 Type 、 DefinedSize 、 Precision 和 NumericScale )都有效。此时对它们进行设置将有助于动态构造格式。
表示公共数据类型的数据列。
说明
每个 Field 对象都对应于 Recordset 中的一列。使用 Field 对象的 Value 属性来设置或返回当前记录的数据。 Field 对象的某些集合、方法或属性可能不可用,这取决于提供者提供的功能。
用 Field 对象的集合、方法和属性可以执行下列操作:
用 Name 属性返回字段名。
用 Value 属性查看或更改字段中的数据。 Value 为 Field 对象的默认属性。
用 Type 、 Precision 和 NumericScale 属性返回字段的基本特性。
用 DefinedSize 属性返回已声明的字段大小。
用 ActualSize 属性返回给定字段中的数据的实际大小。
用 Attributes 属性和 Properties 集合确定给定字段支持的功能类型。
用 AppendChunk 和 GetChunk 方法对包含长二进制或长字符数据的字段值进行操作。
如果提供者支持批更新,请用 OriginalValue 和 UnderlyingValue 属性在批更新过程中解决字段值之间的差异。
在打开 Field 对象的 Recordset 之前,所有元数据属性( Name 、 Type 、 DefinedSize 、 Precision 和 NumericScale )都有效。此时对它们进行设置将有助于动态构造格式。
Value
属性
指示分配给 Field 、 Parameter 或 Property 对象的值。
设置和返回值
设置或返回 Variant 值,用于指示对象的值。默认值取决于 Type 属性。
说明
用 Value 属性设置或返回 Field 对象中的数据,与 Parameter 对象一起使用来设置或返回参数值,或者与 Property 对象一起使用来设置或返回属性设置。 Value 属性为读 / 写还是只读取决于很多因素。有关详细信息,请参阅对应的对象主题。
ADO 允许用 Value 属性设置和返回长二进制数据。
注意 对于 Parameter 对象, ADO 只从提供者读取 Value 属性一次。如果命令包含其 Value 属性为空的 Parameter ,并且在命令中创建了 Recordset ,请确保检索 Value 属性前先关闭 Recordset 。否则,对于某些提供者, Value 属性可能为空,不会包含正确的值。
对于已追加到 Record 对象的 Fields 集合中的新 Field 对象,必须先设置 Value 属性,然后才可指定任何其他的 Field 属性。首先必须给 Value 属性分配特定的值,并且调用 Fields 集合的 Update 。然后再访问其他属性(如 Type 或 Attributes )。
指示分配给 Field 、 Parameter 或 Property 对象的值。
设置和返回值
设置或返回 Variant 值,用于指示对象的值。默认值取决于 Type 属性。
说明
用 Value 属性设置或返回 Field 对象中的数据,与 Parameter 对象一起使用来设置或返回参数值,或者与 Property 对象一起使用来设置或返回属性设置。 Value 属性为读 / 写还是只读取决于很多因素。有关详细信息,请参阅对应的对象主题。
ADO 允许用 Value 属性设置和返回长二进制数据。
注意 对于 Parameter 对象, ADO 只从提供者读取 Value 属性一次。如果命令包含其 Value 属性为空的 Parameter ,并且在命令中创建了 Recordset ,请确保检索 Value 属性前先关闭 Recordset 。否则,对于某些提供者, Value 属性可能为空,不会包含正确的值。
对于已追加到 Record 对象的 Fields 集合中的新 Field 对象,必须先设置 Value 属性,然后才可指定任何其他的 Field 属性。首先必须给 Value 属性分配特定的值,并且调用 Fields 集合的 Update 。然后再访问其他属性(如 Type 或 Attributes )。
Name
属性
指示对象的名称。
设置和返回值
设置或返回 String 值,指示对象的名称。
说明
使用 Name 属性为 Command 、 Property 、 Field 或 Parameter 对象分配名称或检索名称。
该值对于 Command 对象为读 / 写,对于 Property 对象为只读。
对于 Field 对象, Name 通常为只读。但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, Name 才为读 / 写。
对于尚未追加到 Parameters 集合的 Parameter 对象, Name 属性为读 / 写。对于已追加的 Parameter 对象和所有其他对象, Name 属性为只读。名称在集合中不必是唯一的。
可以按序号引用来检索对象的 Name 属性,然后便可以直接按名称引用该对象。例如,如果 rstMain.Properties(20).Name 产生 Updatability ,随后便可以用 rstMain.Properties("Updatability") 来引用此属性。
指示对象的名称。
设置和返回值
设置或返回 String 值,指示对象的名称。
说明
使用 Name 属性为 Command 、 Property 、 Field 或 Parameter 对象分配名称或检索名称。
该值对于 Command 对象为读 / 写,对于 Property 对象为只读。
对于 Field 对象, Name 通常为只读。但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, Name 才为读 / 写。
对于尚未追加到 Parameters 集合的 Parameter 对象, Name 属性为读 / 写。对于已追加的 Parameter 对象和所有其他对象, Name 属性为只读。名称在集合中不必是唯一的。
可以按序号引用来检索对象的 Name 属性,然后便可以直接按名称引用该对象。例如,如果 rstMain.Properties(20).Name 产生 Updatability ,随后便可以用 rstMain.Properties("Updatability") 来引用此属性。
Type
属性
指示 Parameter 、 Field 或 Property 对象的可操作类型或数据类型。
设置和返回值
设置或返回 DataTypeEnum 值。
说明
对于 Parameter 对象, Type 属性为读 / 写。对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当 Field 的 Value 属性已被指定并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, Type 才为读 / 写。
对于其他所有对象, Type 属性为只读。
Precision 属性
指示 Parameter 对象中的数字值的精度或数字型 Field 对象的精度。
设置和返回值
设置或返回 Byte 值,指示表示值的最大位数。
说明
用 Precision 属性确定表示数字型 Parameter 或 Field 对象值的最大位数。
对于 Parameter 对象,该值为读 / 写。
对于 Field 对象, Precision 通常为只读。但是,对于已追加到 Record 的 Fields 集合的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新 Field 时, Precision 才为读 / 写。
指示 Parameter 、 Field 或 Property 对象的可操作类型或数据类型。
设置和返回值
设置或返回 DataTypeEnum 值。
说明
对于 Parameter 对象, Type 属性为读 / 写。对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当 Field 的 Value 属性已被指定并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, Type 才为读 / 写。
对于其他所有对象, Type 属性为只读。
Precision 属性
指示 Parameter 对象中的数字值的精度或数字型 Field 对象的精度。
设置和返回值
设置或返回 Byte 值,指示表示值的最大位数。
说明
用 Precision 属性确定表示数字型 Parameter 或 Field 对象值的最大位数。
对于 Parameter 对象,该值为读 / 写。
对于 Field 对象, Precision 通常为只读。但是,对于已追加到 Record 的 Fields 集合的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新 Field 时, Precision 才为读 / 写。
NumericScale
属性
指示 Parameter 或 Field 对象中数字值的范围。
设置和返回值
设置或返回 Byte 值,指示数字值要精确的小数位数。
说明
使用 NumericScale 属性来确定数字型 Parameter 或 Field 对象的值的小数位数。
对于 Parameter 对象, NumericScale 属性为读 / 写。
对于 Field 对象, NumericScale 通常为只读。但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当 Field 的 Value 属性已被指定并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, NumericScale 才为读 / 写。
指示 Parameter 或 Field 对象中数字值的范围。
设置和返回值
设置或返回 Byte 值,指示数字值要精确的小数位数。
说明
使用 NumericScale 属性来确定数字型 Parameter 或 Field 对象的值的小数位数。
对于 Parameter 对象, NumericScale 属性为读 / 写。
对于 Field 对象, NumericScale 通常为只读。但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当 Field 的 Value 属性已被指定并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时, NumericScale 才为读 / 写。
DefinedSize
属性
指示 Field 对象的数据容量。
返回值
返回 Long 值,反映字段定义的字节大小。
说明
用 DefinedSize 属性确定 Field 对象的数据容量。
DefinedSize 与 ActualSize 属性不同。例如,假设 Field 对象声明类型为 adVarChar , DefinedSize 属性值为 50 ,并包含单个字符。该对象返回的 ActualSize 属性值为单个字符的字节长度。
指示 Field 对象的数据容量。
返回值
返回 Long 值,反映字段定义的字节大小。
说明
用 DefinedSize 属性确定 Field 对象的数据容量。
DefinedSize 与 ActualSize 属性不同。例如,假设 Field 对象声明类型为 adVarChar , DefinedSize 属性值为 50 ,并包含单个字符。该对象返回的 ActualSize 属性值为单个字符的字节长度。
ActualSize
属性
指示字段的值的实际长度。
设置和返回值
返回 Long 值。某些提供者允许设置此属性以便为 BLOB 数据预留空间,在此情况下,默认值为 0 。
说明
用 ActualSize 属性返回 Field 对象的值的实际长度。对于所有字段, ActualSize 属性均为只读。如果 ADO 无法确定 Field 对象的值的长度, ActualSize 属性将返回 adUnknown 。
ActualSize 与 DefinedSize 属性有所不同,其区别如下例所示。声明为 adVarChar 类型、最大长度为 50 个字符的 Field 对象返回的 DefinedSize 属性值为 50 ,但它返回的 ActualSize 属性值为存储在当前记录的字段中的数据长度。 DefinedSize 超过 255 字节的 Fields 被视为变长列。
指示字段的值的实际长度。
设置和返回值
返回 Long 值。某些提供者允许设置此属性以便为 BLOB 数据预留空间,在此情况下,默认值为 0 。
说明
用 ActualSize 属性返回 Field 对象的值的实际长度。对于所有字段, ActualSize 属性均为只读。如果 ADO 无法确定 Field 对象的值的长度, ActualSize 属性将返回 adUnknown 。
ActualSize 与 DefinedSize 属性有所不同,其区别如下例所示。声明为 adVarChar 类型、最大长度为 50 个字符的 Field 对象返回的 DefinedSize 属性值为 50 ,但它返回的 ActualSize 属性值为存储在当前记录的字段中的数据长度。 DefinedSize 超过 255 字节的 Fields 被视为变长列。
Attributes
属性
指示对象的一项或多项特性。
设置和返回值
设置或返回 Long 值。
对于 Connection 对象, Attributes 属性为读 / 写,并且其值可以是一个或多个 XactAttributeEnum 值的和。默认值为零 (0) 。
对于 Parameter 对象, Attributes 属性为读 / 写,并且其值可以是任意一个或多个 ParameterAttributesEnum 值的和。默认值为 adParamSigned 。
对于 Field 对象, Attributes 属性可以是一个或多个 FieldAttributeEnum 值的和。通常情况下该属性为只读,但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法已成功添加了新的 Field 时, Attributes 才为读 / 写。
对于 Property 对象, Attributes 属性为只读,并且其值可以是任意一个或多个 PropertyAttributesEnum 值的和。
说明
使用 Attributes 属性设置或返回 Connection 对象、 Parameter 对象、 Field 对象或 Property 对象的特性。
设置多个属性时,可以将适当的常量相加。如果将属性值设置为包括不兼容常量的和,将会发生错误。
远程数据服务用法 此属性在客户端 Connection 对象上不可用。
指示对象的一项或多项特性。
设置和返回值
设置或返回 Long 值。
对于 Connection 对象, Attributes 属性为读 / 写,并且其值可以是一个或多个 XactAttributeEnum 值的和。默认值为零 (0) 。
对于 Parameter 对象, Attributes 属性为读 / 写,并且其值可以是任意一个或多个 ParameterAttributesEnum 值的和。默认值为 adParamSigned 。
对于 Field 对象, Attributes 属性可以是一个或多个 FieldAttributeEnum 值的和。通常情况下该属性为只读,但是,对于已追加到 Record 的 Fields 集合中的新 Field 对象,只有当已指定 Field 的 Value 属性并且数据提供者通过调用 Fields 集合的 Update 方法已成功添加了新的 Field 时, Attributes 才为读 / 写。
对于 Property 对象, Attributes 属性为只读,并且其值可以是任意一个或多个 PropertyAttributesEnum 值的和。
说明
使用 Attributes 属性设置或返回 Connection 对象、 Parameter 对象、 Field 对象或 Property 对象的特性。
设置多个属性时,可以将适当的常量相加。如果将属性值设置为包括不兼容常量的和,将会发生错误。
远程数据服务用法 此属性在客户端 Connection 对象上不可用。
AppendChunk
方法
将数据追加到大的文本或二进制数据 Field 或追加到 Parameter 对象。
语法
object.AppendChunk Data
参数
object Field 或 Parameter 对象。
Data Variant ,包含要追加到对象的数据。
说明
使用 Field 或 Parameter 对象的 AppendChunk 方法用长二进制或字符数据填充。在系统内存有限的情况下,可使用 AppendChunk 方法操作部分而非全部的 Long 值。
Field
如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该字段使用 AppendChunk 方法。
在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有数据。后续的 AppendChunk 调用向现有数据中添加数据。如果要将数据追加到一个字段然后在当前记录中设置或读取其他字段的值, ADO 会认为已完成向第一个字段追加数据。如果在第一个字段上再次调用 AppendChunk 方法, ADO 将把这次调用解释为新的 AppendChunk 操作并覆盖现有数据。访问其他 Recordset 对象(并非第一个 Recordset 对象的副本)中的字段将不会中断 AppendChunk 操作。
在 Field 对象上调用 AppendChunk 时,如果没有当前记录,将发生错误。
注意 AppendChunk 方法对 Record 对象的 Field 对象不起作用。它不执行任何操作并将产生运行时错误。
Parameter
如果 Parameter 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该参数使用 AppendChunk 方法。
在 Parameter 对象上的第一个 AppendChunk 调用将数据写入参数,覆盖任何现有数据。 Parameter 对象上的后续 AppendChunk 调用向现有参数数据中添加数据。传送 Null 值的 AppendChunk 调用放弃所有参数数据。
GetChunk 方法
返回大的文本或二进制数据 Field 对象的全部或部分内容。
语法
variable = field.GetChunk( Size )
返回值
返回 Variant 。
参数
Size Long 表达式,等于要检索的字节或字符数。
说明
使用 Field 对象的 GetChunk 方法来检索其中的部分或全部长二进制或字符数据。在系统内存有限的情况下,可使用 GetChunk 方法操作部分而非全部 Long 值。
GetChunk 调用返回的数据将被分配给 variable 。如果 Size 大于剩余的数据, GetChunk 方法仅返回剩余的数据而不用空格填充 variable 。如果该字段为空, GetChunk 方法将返回 Null 值。
每个后续的 GetChunk 调用将从上一次 GetChunk 调用停止处开始检索数据。但是,如果在当前记录中检索一个字段中的数据然后设置或读取另一个字段的值, ADO 将认为已经完成对第一个字段中的数据的检索。如果在第一个字段上再次调用 GetChunk 方法, ADO 将把这次调用解释为新的 GetChunk 操作,并从数据的开始处读取。访问其他 Recordset 对象(并非第一个 Recordset 对象的副本)中的字段将不会中断 GetChunk 操作。
如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该字段使用 GetChunk 方法。
如果使用 Field 对象的 Getchunk 方法时没有当前记录,将产生错误 3021 (没有当前记录)。
注意 GetChunk 方法在 Record 对象的 Field 对象上不起作用。它不执行任何操作并将产生运行时错误。
将数据追加到大的文本或二进制数据 Field 或追加到 Parameter 对象。
语法
object.AppendChunk Data
参数
object Field 或 Parameter 对象。
Data Variant ,包含要追加到对象的数据。
说明
使用 Field 或 Parameter 对象的 AppendChunk 方法用长二进制或字符数据填充。在系统内存有限的情况下,可使用 AppendChunk 方法操作部分而非全部的 Long 值。
Field
如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该字段使用 AppendChunk 方法。
在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有数据。后续的 AppendChunk 调用向现有数据中添加数据。如果要将数据追加到一个字段然后在当前记录中设置或读取其他字段的值, ADO 会认为已完成向第一个字段追加数据。如果在第一个字段上再次调用 AppendChunk 方法, ADO 将把这次调用解释为新的 AppendChunk 操作并覆盖现有数据。访问其他 Recordset 对象(并非第一个 Recordset 对象的副本)中的字段将不会中断 AppendChunk 操作。
在 Field 对象上调用 AppendChunk 时,如果没有当前记录,将发生错误。
注意 AppendChunk 方法对 Record 对象的 Field 对象不起作用。它不执行任何操作并将产生运行时错误。
Parameter
如果 Parameter 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该参数使用 AppendChunk 方法。
在 Parameter 对象上的第一个 AppendChunk 调用将数据写入参数,覆盖任何现有数据。 Parameter 对象上的后续 AppendChunk 调用向现有参数数据中添加数据。传送 Null 值的 AppendChunk 调用放弃所有参数数据。
GetChunk 方法
返回大的文本或二进制数据 Field 对象的全部或部分内容。
语法
variable = field.GetChunk( Size )
返回值
返回 Variant 。
参数
Size Long 表达式,等于要检索的字节或字符数。
说明
使用 Field 对象的 GetChunk 方法来检索其中的部分或全部长二进制或字符数据。在系统内存有限的情况下,可使用 GetChunk 方法操作部分而非全部 Long 值。
GetChunk 调用返回的数据将被分配给 variable 。如果 Size 大于剩余的数据, GetChunk 方法仅返回剩余的数据而不用空格填充 variable 。如果该字段为空, GetChunk 方法将返回 Null 值。
每个后续的 GetChunk 调用将从上一次 GetChunk 调用停止处开始检索数据。但是,如果在当前记录中检索一个字段中的数据然后设置或读取另一个字段的值, ADO 将认为已经完成对第一个字段中的数据的检索。如果在第一个字段上再次调用 GetChunk 方法, ADO 将把这次调用解释为新的 GetChunk 操作,并从数据的开始处读取。访问其他 Recordset 对象(并非第一个 Recordset 对象的副本)中的字段将不会中断 GetChunk 操作。
如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True ,可以对该字段使用 GetChunk 方法。
如果使用 Field 对象的 Getchunk 方法时没有当前记录,将产生错误 3021 (没有当前记录)。
注意 GetChunk 方法在 Record 对象的 Field 对象上不起作用。它不执行任何操作并将产生运行时错误。
OriginalValue
属性
指示发生任何更改前记录中已经存在的 Field 的值。
返回值
返回 Variant 值,表示更改前字段的值。
说明
用 OriginalValue 属性返回当前记录中某字段的原始字段值。
在“立即更新模式”(在此模式下,调用 Update 方法后提供者便把更改写入基本数据源)下, OriginalValue 属性返回更改前(即自从最后一次调用 Update 方法)存在的字段值。它与 CancelUpdate 方法用来替换 Value 属性的值相同。
在“批更新模式”(在此模式下,只有当调用 UpdateBatch 方法时,提供者才将多个更改存入缓存并将它们写入基本数据源)下, OriginalValue 属性返回更改前(即自从最后一次调用 UpdateBatch 方法)存在的字段值。它与 CancelBatch 方法用来替换 Value 属性的值相同。当将此属性与 UnderlyingValue 属性配合使用时,可以解决批更新时出现的冲突。
Record
对于 Record 对象,调用 Update 前添加的字段的 OriginalValue 属性将为空。
UnderlyingValue 属性
指示数据库中 Field 对象的当前值。
返回值
返回 Variant 值,用于指示 Field 的值。
说明
用 UnderlyingValue 属性从数据库中返回当前字段值。 UnderlyingValue 属性中的字段值是事务的可视值,它可能是另一事务最近更新的结果。这可能与 OriginalValue 属性不同,因为 OriginalValue 属性反映最初返回到 Recordset 的值。
这与使用 Resync 方法类似,但 UnderlyingValue 属性只从当前记录返回特定字段的值。该值与 Resync 方法用来替换 Value 属性的值相同。
将此属性与 OriginalValue 属性配合使用可以解决批更新时出现的冲突。
指示发生任何更改前记录中已经存在的 Field 的值。
返回值
返回 Variant 值,表示更改前字段的值。
说明
用 OriginalValue 属性返回当前记录中某字段的原始字段值。
在“立即更新模式”(在此模式下,调用 Update 方法后提供者便把更改写入基本数据源)下, OriginalValue 属性返回更改前(即自从最后一次调用 Update 方法)存在的字段值。它与 CancelUpdate 方法用来替换 Value 属性的值相同。
在“批更新模式”(在此模式下,只有当调用 UpdateBatch 方法时,提供者才将多个更改存入缓存并将它们写入基本数据源)下, OriginalValue 属性返回更改前(即自从最后一次调用 UpdateBatch 方法)存在的字段值。它与 CancelBatch 方法用来替换 Value 属性的值相同。当将此属性与 UnderlyingValue 属性配合使用时,可以解决批更新时出现的冲突。
Record
对于 Record 对象,调用 Update 前添加的字段的 OriginalValue 属性将为空。
UnderlyingValue 属性
指示数据库中 Field 对象的当前值。
返回值
返回 Variant 值,用于指示 Field 的值。
说明
用 UnderlyingValue 属性从数据库中返回当前字段值。 UnderlyingValue 属性中的字段值是事务的可视值,它可能是另一事务最近更新的结果。这可能与 OriginalValue 属性不同,因为 OriginalValue 属性反映最初返回到 Recordset 的值。
这与使用 Resync 方法类似,但 UnderlyingValue 属性只从当前记录返回特定字段的值。该值与 Resync 方法用来替换 Value 属性的值相同。
将此属性与 OriginalValue 属性配合使用可以解决批更新时出现的冲突。