Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual2.doc
Скачиваний:
5
Добавлен:
07.03.2016
Размер:
3.31 Mб
Скачать

10.5. Об'єкт Field і колекція Fields

Клас Recordset містить колекцію об'єктів Fields, що використовуються для роботи з окремими стовпцями групи рядків. З кожним стовпцем у групі рядків пов'язаний об'єкт Field цієї колекції, який забезпечує доступ до метаданих стовпця, таким як ім'я стовпця та тип даних, а також до реального значення даного стовпця в поточному рядку.

Колекція Fields є властивістю об'єкта Recordset, яка підтримує такі властивості і методи (табл. 10.7).

Таблиця 10.7

Методи і властивості колекції Fields

Властивості і методи

Опис

Count

Повертає кількість об'єктів у колекції.

Item(index)

Повертає елемент колекції за ім'я або порядковим номером.

Append(Name, Type, DefinedSize, Attrib)

Створює і додає новий об'єкт Field в колекцію. Поля слід додавати до об'єкта Recordset перед його відкриттям. Параметри:

  • Name - унікальне ім'я поля.

  • Type - тип поля.

  • DefinedSize - необов'язковий. Розмір поля в символах чи байтах.

  • Attrib - атрибути поля.

Delete(Field)

Видаляє об'єкт Field з колекції, що відповідає видаленню поля з набору записів. Параметр Field задає ім'я об'єкта Field або його порядковий номер. Метод може використовуватися тільки для набору записів Recordset перед його відкриттям.

Об'єкт Field представляє собою стовпець даних одного типу, тобто поле набору записів Recordset. Властивості об'єкта Field представлені в табл. 10.8.

Таблиця 10.8

Властивості об'єкта Field

Властивості

Опис

Name

Повертає ім'я поля.

Value

Повертає значення поля.

OriginalValue

Повертає значення поля після останнього виклику Update() або UpdateBatch(). Це те значення, яке використовують методи CancelUpdate() і CancelBatch().

UnderlyingValue

Повертає поточне значення поля з джерела даних.

DefinedSize

Повертає максимальний розмір поля.

ActualSize

Повертає розмір фактичного значення поля.

Type

Повертає тип поля.

Precision

Повертає ступінь точності для числових значень поля (максимальна кількість цифр).

NumericScale

Повертає масштаб числових значень поля (кількість десяткових знаків праворуч від коми).

Properties

Повертає колекцію динамічних властивостей об'єкта (об'єктів Property).

Приклад 12. Робота з об'єктом Field

У даному прикладі виводяться значення полів, а також їх типи.

.............................................................

CString str = "Значения и типы полей:\n";

long i, kol;

FieldsPtr fields; // объявление указателя на коллекцию Fields

FieldPtr field; // объявление указателя на объект Field

fields = pRecordset->GetFields();

kol = fields-> GetCount(); // количество полей

for(i=0;i<kol;i++)

{

field = fields->GetItem ((_variant_t)i);

str+= field->GetValue();

str+="\t";

str+=(_bstr_t)(long)field->GetType();

str+="\n";

}

MessageBox(str);

.............................................................

Даний фрагмент є універсальним для виведення значень і типів полів певного набору записів Recordset.

Слід зазначити, що властивість Type (або функція GetType()) повертає константу типу DataTypeEnum, тому щоб побачити її значення в рядку, необхідно привести її до типу даних long, а потім до _bstr_t.

У таблиці 10.9 наведені типи даних полів у ADO.

Таблиця 10.9

Типи даних об'єкта Field

Тип

Опис

adChar

char[];рядок ANSI який завершується символом NULL.

adWChar

wchar_t[];рядок Unicode який завершується символом NULL.

adBSTR

BSTR; рядок який завершується символом NULL, що зберігає свою довжину.

adTinyInt

signed char; однобайтове знакове ціле.

adUnsignedTinyInt

unsigned char; однобайтове беззнакове ціле.

adSmallInt

short; двухбайтове знакове ціле.

adUnsignedSmallInt

unsigned short; двухбайтове беззнакове ціле.

adInteger

long; чотирьохбайтове знакове ціле.

adUnsignedInt

unsigned long; чотирьохбайтове беззнакове ціле.

adBigInt

_int64; восьмибайтове знакове ціле.

adUnsignedBigInt

_int64; восьмибайтове беззнакове ціле.

adSingle

float;значення з плаваючою точкою одинарної точності.

adDouble

double;значення з плаваючою точкою подвійної точності.

adCurrency

LARGEINTEGER;значення типу currency помножене на 10000.

adDate

DATE;значення подвійної точності. Ціла частина вказує кількість днів, що минули з першого дня 1900 р., а дробова представляє частину дня.

adDBDate

DBDATE;рік, місяць і день.

adDBTime

DBTIME; години, хвилини і секунди.

Продовження таблиці 10.9

Тип

Опис

adDBTimeStamp

DBTIMESTAMP;рік, місяць, день, години, хвилини, секунди і долі секунди.

adError

SCODE;32-розрядний код помилки.

adBoolean

VARIANT_BOOL; значення Boolean, 0 означає FALSE, a -1 - TRUE.

adDecimal

DECIMAL;значення з фіксованою точністю і розміром.

adBinary

BYTE[];двійковий масив байтових значень.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]