Объект Field
Область применения: Access 2013, Office 2013
Каждый объект Field обычно соответствует столбцу в таблице базы данных. Однако поле также может представлять указатель на другой набор записей, называемый главой. Исключения, такие как столбцы главы, будут рассмотрены далее в этом руководстве.
Используйте свойство Value объекта Field , чтобы задать или вернуть данные для текущей записи. В зависимости от функциональных возможностей, предоставляемых поставщиком, некоторые коллекции, методы или свойства объекта Field могут быть недоступны.
С помощью коллекций, методов и свойств объекта Field можно сделать следующее:
Возвращает имя поля с помощью свойства Name .
Просмотрите или измените данные в поле с помощью свойства Value . Значение является свойством объекта Field по умолчанию.
Возвращает основные характеристики поля с помощью свойств Type, Precision и NumericScale .
Возвращает объявленный размер поля с помощью свойства DefinedSize .
Возвращает фактический размер данных в заданном поле с помощью свойства ActualSize .
Определите, какие типы функциональных возможностей поддерживаются для заданного поля, используя свойство Attributes и коллекцию Свойств .
Управляйте значениями полей, содержащих длинные двоичные или длинные символьные данные, с помощью методов AppendChunk и GetChunk .
Устраняйте расхождения в значениях полей во время пакетного обновления с помощью свойств OriginalValue и UnderlyingValue , если поставщик поддерживает пакетные обновления.
Описание поля
В следующих разделах рассматриваются свойства объекта Field , представляющие сведения, описывающие сам объект Field , то есть метаданные о поле. Эти сведения можно использовать для определения многого о схеме набора записей. К этим свойствам относятся Type, DefinedSize и ActualSize, Name, NumericScale and Precision.
Обнаружение типа данных
Свойство Type указывает тип данных поля. Перечисляемые константы типа данных, поддерживаемые ADO, описаны в разделе DataTypeEnumв справочнике программиста ADO.
Дополнительные сведения можно получить для числовых типов с плавающей запятой, таких как adNumeric. Свойство NumericScale указывает, сколько цифр справа от десятичной запятой будет использоваться для представления значений поля. Свойство Precision указывает максимальное количество цифр, используемых для представления значений поля.
Определение размера поля
Используйте свойство DefinedSize для определения емкости данных объекта Field .
Используйте свойство ActualSize , чтобы вернуть фактическую длину значения объекта Field . Для всех полей свойство ActualSize доступно только для чтения. Если ADO не может определить длину значения объекта Field , свойство ActualSize возвращает значение adUnknown.
Свойства DefinedSize и ActualSize имеют разные цели. Например, рассмотрим объект Field с объявленным типом adVarChar и значением свойства DefinedSize 50, содержащим один символ. Возвращаемое значение свойства ActualSize — это длина одного символа в байтах.
Определение содержимого поля
Идентификатор столбца из источника данных представлен свойством Nameобъекта Field. Свойство Value объекта Field возвращает или задает фактическое содержимое данных поля. Это свойство по умолчанию.
Чтобы изменить данные в поле, задайте для свойства Value новое значение правильного типа. Тип курсора должен поддерживать обновления для изменения содержимого поля. Проверка базы данных здесь не выполняется в пакетном режиме, поэтому при вызове UpdateBatch в таком случае потребуется проверка ошибок. Некоторые поставщики также поддерживают свойства UnderlyingValue и OriginalValue объекта ADO Field, чтобы помочь в разрешении конфликтов при попытке выполнить пакетное обновление. Дополнительные сведения об устранении таких конфликтов см. в разделе Глава 4. Редактирование данных.
Примечание.
Значения полей набора записей нельзя задать при добавлении новых полей в набор записей. Вместо этого новые поля можно добавить в закрытый набор записей. Затем необходимо открыть набор записей , и только после этого значения могут быть назначены этим полям.
Получение дополнительных сведений о поле
Объекты ADO имеют два типа свойств: встроенные и динамические. На данный момент обсуждались только встроенные свойства объекта Field .
Встроенные свойства — это свойства, реализованные в ADO и немедленно доступные для любого нового объекта с помощью синтаксиса . Они не отображаются как объекты Property в коллекции Свойств объекта.
Динамические свойства определяются базовым поставщиком данных и отображаются в коллекции Properties для соответствующего объекта ADO. Например, свойство, относяемое к поставщику, может указывать, поддерживает ли объект Recordset транзакции или обновление. Эти дополнительные свойства будут отображаться как объекты Property в коллекции Свойств объекта Recordset. На динамические свойства можно ссылаться только через коллекцию, используя синтаксис MyObject.Properties(0) или MyObject.Properties("Имя").
Невозможно удалить любой тип свойства.
Динамический объект Property имеет четыре собственных встроенных свойства:
Свойство Name — это строка, которая идентифицирует свойство .
Свойство Type — это целое число, указывающее тип данных свойства.
Свойство Value — это вариант, содержащий параметр свойства . Значение является свойством по умолчанию для объекта Property .
Свойство Attributes — это значение Long , указывающее характеристики свойства, относящееся к поставщику.
Коллекция Properties для объекта Field содержит дополнительные метаданные о поле. Содержимое этой коллекции зависит от поставщика. В следующем примере кода рассматривается коллекция Properties примера Recordset, представленного в начале этой главы. Сначала выполняется поиск содержимого коллекции. Этот код использует поставщик OLE DB для SQL Server, поэтому коллекция Properties содержит сведения, относящиеся к этому поставщику.
'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
Работа с двоичными данными
Используйте метод AppendChunk для объекта Field , чтобы заполнить его длинными двоичными или символьными данными. В ситуациях, когда системная память ограничена, можно использовать метод AppendChunk для обработки длинных значений частями, а не в их полном объеме.
Если бит adFldLong в свойстве Attributes объекта Field имеет значение True, для этого поля можно использовать метод AppendChunk .
Первый вызов AppendChunk для объекта Field записывает данные в поле, перезаписывая все существующие данные. Последующие вызовы AppendChunk добавляются к существующим данным. Если вы добавляете данные в одно поле, а затем задаете или считываете значение другого поля в текущей записи, ADO предполагает, что вы завершили добавление данных в первое поле. При повторном вызове метода AppendChunk в первом поле ADO интерпретирует вызов как новую операцию AppendChunk и перезаписывает существующие данные. Доступ к полям в других объектах Recordset , которые не являются клонами первого объекта Recordset , не приведет к нарушению операций AppendChunk .
Используйте метод GetChunk для объекта Field , чтобы получить часть или все его длинные двоичные или символьные данные. В ситуациях, когда системная память ограничена, можно использовать метод GetChunk для обработки длинных значений частями, а не в их полном объеме.
Данные, возвращаемые вызовом GetChunk , назначаются переменной. Если размер больше остальных данных, метод GetChunk возвращает только оставшиеся данные без заполнения переменной с пустыми пробелами. Если поле пустое, метод GetChunk возвращает значение NULL.
Каждый последующий вызов GetChunk извлекает данные, начиная с того места, где был выключен предыдущий вызов GetChunk . Однако если вы извлекаете данные из одного поля, а затем задаете или считываете значение другого поля в текущей записи, ADO предполагает, что вы завершили извлечение данных из первого поля. При повторном вызове метода GetChunk в первом поле ADO интерпретирует вызов как новую операцию GetChunk и начинает чтение с начала данных. Доступ к полям в других объектах Recordset , которые не являются клонами первого объекта Recordset , не приведет к нарушению операций GetChunk .
Если бит adFldLong в свойстве Attributes объекта Field имеет значение True, для этого поля можно использовать метод GetChunk .
Если при использовании метода GetChunk или AppendChunk в объекте Field нет текущей записи, возникает ошибка 3021 (нет текущей записи).
Пример использования этих методов для управления двоичными данными см. в примерах методов AppendChunk и GetChunk всправочнике программиста ADO.