Compartir a través de


El objeto Field

Cada objeto Field normalmente corresponde a una columna de una tabla de base de datos. Sin embargo, un field de también puede representar un puntero a otro Recordset, denominado capítulo. Las excepciones, como las columnas de capítulo, se tratarán más adelante en esta guía.

Utilice la propiedad Valor de los objetos Campo para establecer o devolver datos para el registro actual. Según la funcionalidad que expone el proveedor, es posible que algunas colecciones, métodos o propiedades de un objeto field no estén disponibles.

Con las colecciones, métodos y propiedades de un objeto Field Field, puede hacer lo siguiente:

  • Devuelve el nombre de un campo mediante la propiedad Nombre.

  • Vea o cambie los datos del campo mediante la propiedad Valor de . Value es la propiedad predeterminada del objeto Field .

  • Devuelve las características básicas de un campo mediante las propiedades de Type, Precisiony NumericScale.

  • Devuelve el tamaño declarado de un campo mediante la propiedad DefinedSize.

  • Devuelve el tamaño real de los datos de un campo determinado mediante la propiedad ActualSize .

  • Determine qué tipos de funcionalidad se admiten para un campo determinado utilizando la propiedad Attributes y la colección Properties.

  • Manipule los valores de los campos que contienen datos de caracteres largos o binarios largos mediante los métodos AppendChunk y GetChunk.

Resuelva las discrepancias en los valores de campo durante la actualización por lotes mediante el OriginalValue y las propiedades UnderlyingValue, si el proveedor admite actualizaciones por lotes.

Descripción de un campo

En los temas siguientes se describirán las propiedades del objeto Field que representan información que describe al objeto Field , es decir, metadatos sobre el campo. Esta información se puede usar para determinar mucho sobre el esquema del conjunto de registros de . Estas propiedades incluyen Type, DefinedSize y ActualSize, Namey NumericScale y Precision.

Detección del tipo de datos

La propiedad Type indica el tipo de datos del campo. Las constantes enumeradas del tipo de datos compatibles con ADO se describen en DataTypeEnum en la Referencia del Programador de ADO.

Para los tipos numéricos de punto flotante, como adNumeric, puede obtener más información. La propiedad NumericScale de indica cuántos dígitos a la derecha del separador decimal se usarán para representar los valores del campo . La propiedad Precision especifica el número máximo de dígitos utilizados para representar valores para el Campo de.

Determinar el tamaño del campo

Use la propiedad DefinedSize para determinar la capacidad de datos de un objeto Field.

Utilice la propiedad ActualSize para devolver la longitud real del valor de un objeto Field. Para todos los campos, la propiedad ActualSize es de solo lectura. Si ADO no puede determinar la longitud del valor de Field objeto, la propiedad ActualSize devuelve adUnknown.

Las propiedades DefinedSize y ActualSize tienen fines diferentes. Por ejemplo, considere un objeto Field con un tipo declarado de adVarChar y con un valor de propiedad DefinedSize de 50, que contiene un solo carácter. El valor de la propiedad ActualSize que devuelve es la longitud en bytes del carácter único.

Determinar el contenido del campo

El identificador de la columna del origen de datos se representa mediante la propiedad Name del campo de . La propiedad Value del objeto Field devuelve o establece el contenido de datos real del campo. Esta es la propiedad predeterminada.

Para cambiar los datos de un campo, establezca la propiedad Value igual a un nuevo valor del tipo correcto. El tipo de cursor debe admitir actualizaciones para cambiar el contenido de un campo. La validación de la base de datos no se realiza aquí en modo por lotes, por lo que deberá comprobar si hay errores al llamar a UpdateBatch en tal caso. Algunos proveedores también admiten las propiedades del objeto Field, UnderlyingValue y OriginalValue para ayudarle a resolver conflictos al intentar realizar actualizaciones por lotes. Para obtener más información sobre cómo resolver estos conflictos, consulte Editar datos.

Nota

No se pueden establecer los valores del campo de un Recordset al anexar nuevos Fields a un Recordset. Más bien, se pueden agregar nuevos Campos a un Recordset cerrado . A continuación, se debe abrir el Recordset, y solo entonces se podrán asignar valores a estos Campos.

Obtención de más información sobre campos

Los objetos ADO tienen dos tipos de propiedades: integradas y dinámicas. En este punto, solo se han analizado las propiedades integradas del objeto Field.

Las propiedades integradas son esas propiedades implementadas en ADO e inmediatamente disponibles para cualquier nuevo objeto, mediante la sintaxis MyObject.Property. No aparecen como objetos de la propiedad dentro de la colección de propiedades de un objeto.

Las propiedades dinámicas se definen mediante el proveedor de datos subyacente y aparecen en la colección Properties para el objeto ADO adecuado. Por ejemplo, una propiedad específica del proveedor puede indicar si un objeto recordset de admite transacciones o actualizaciones. Estas propiedades adicionales aparecerán como objetos Property en la colección Properties del objeto Recordset. Solo se puede hacer referencia a las propiedades dinámicas a través de la colección mediante la sintaxis MyObject.Properties(0) o MyObject.Properties("Name").

No se puede eliminar ningún tipo de propiedad.

Un objeto dinámico Property tiene cuatro propiedades incorporadas propias:

  • La propiedad Name es una cadena que identifica la propiedad .

  • La propiedad Type es un entero que especifica el tipo de datos de propiedad.

  • La propiedad Value es una variante que contiene la configuración de la propiedad. Value es la propiedad predeterminada de un objeto Property.

  • La propiedad Attributes es un valor Long que indica características específicas de la propiedad del proveedor.

La colección Properties del objeto de campo contiene metadatos adicionales sobre el campo. El contenido de esta colección varía en función del proveedor. En el siguiente ejemplo de código se examina la colección Properties del ejemplo Recordset introducido al principio de esta sección. Primero examina el contenido de la colección. Este código usa el proveedor OLE DB de para SQL Server, por lo que la colección Properties contiene información relevante para ese proveedor.

'BeginFieldProps  
    Dim objProp As ADODB.Property  
  
    For intLoop = 0 To (objFields.Count - 1)  
        Debug.Print objFields.Item(intLoop).Name  
  
        For Each objProp In objFields(intLoop).Properties  
            Debug.Print vbTab & objProp.Name & " = " & objProp.Value  
        Next objProp  
    Next intLoop  
'EndFieldProps  

Tratar con datos binarios

Utilice el método AppendChunk en un Field objeto para rellenarlo con datos binarios o de caracteres largos. En situaciones en las que la memoria del sistema está limitada, puede usar el método AppendChunk para manipular valores largos en partes en lugar de en su totalidad.

Si el bit adFldLong en la propiedad Attributes de un objeto Field se establece en True, puede usar el método AppendChunk para ese campo.

La primera llamada a AppendChunk en un objeto Field escribe datos al campo, sobrescribiendo cualquier dato existente. Las siguientes llamadas AppendChunk agregan a los datos existentes. Si va a anexar datos a un campo y, a continuación, establece o lee el valor de otro campo del registro actual, ADO supone que ha terminado de anexar datos al primer campo. Si llama al método AppendChunk en el primer campo de nuevo, ADO interpreta la llamada como una nueva operación AppendChunk y sobrescribe los datos existentes. El acceso a campos de otros objetos Recordset que no son clones del primer objeto Recordset no interrumpirá las operaciones de AppendChunk.

Utilice el método GetChunk en un objeto de Campo para recuperar parte o todo su dato binario o de caracteres extensos. En situaciones en las que la memoria del sistema está limitada, puede usar el método GetChunk para manipular valores largos en partes, en lugar de en su totalidad.

Los datos que devuelve una llamada GetChunk se asignan a variable. Si Tamaño es mayor que los datos restantes, el método GetChunk devuelve solo los datos restantes sin rellenar la Variable con espacios vacíos. Si el campo está vacío, el método GetChunk devuelve un valor NULL.

Cada llamada posterior GetChunk recupera datos comenzando desde donde la llamada anterior GetChunk terminó. Sin embargo, si va a recuperar datos de un campo y, a continuación, establece o lee el valor de otro campo en el registro actual, ADO supone que ha terminado de recuperar datos del primer campo. Si llama de nuevo al método GetChunk en el primer campo, ADO interpreta la llamada como una nueva operación de GetChunk y comienza a leer desde el principio de los datos. El acceso a campos en otros objetos Recordset que no son clones del primer objeto Recordset no interferirá en las operaciones GetChunk.

Si el de adFldLong en la propiedad attributes de un objeto field de se establece en True, puede usar el método GetChunk para ese campo.

Si no hay ningún registro actual al usar el método GetChunk o AppendChunk en un objeto field de, se produce el error 3021 (sin registro actual).

Para ver un ejemplo de cómo utilizar estos métodos para manipular datos binarios, consulte los ejemplos del Método AppendChunk y del Método GetChunk en la Referencia del Programador de ADO .