Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция-7.doc
Скачиваний:
12
Добавлен:
20.02.2016
Размер:
111.62 Кб
Скачать

IX.Значення поля

Одержати доступ до значень полів у Delphi дуже просто. Компонент TDataSet по замовчуванню пропонує масив властивостей з ім'ям FieldValues[], що повертає значення певного поля як значення типу Variant. Оскільки масив FieldValues[] - це масив властивостей по замовчуванню, вам не потрібно визначати ім'я властивості для доступу до масиву. Наприклад, у наступному фрагменті коду значення поля CustName таблиці Table1 присвоюється змінній S типу String;

S:= Tablel['CustName'];

Також просто можна привласнити значення поля CustNo цілого типу змінній I:

I := Tablel['CustNo'];

Наслідком із сказаного вище є можливість зберігання значень декількох полів у масиві типу Variant. Єдиним ускладненням є те, що індекс масиву типу Variant повинний починатися з нуля, а його вміст являє собою змінні varVariant.

Масив Fields[] - це масив (з індексами, що починаються з нуля) об'єктів класу TField. Так, елемент Fields[0] повертає об'єкт TField, що представляє перше логічне поле запису. Функції FieldsByName() передається рядковий параметр, що відповідає деякому імені поля в таблиці. Таким чином, при виклику цієї функції у вигляді FieldsByName('OrderNo'} вона повинна повернути компонент TField, що являє поле OrderNo у поточному записі набору даних.

Якщо перше поле в поточному наборі даних - рядкове, зберегти його значення в змінній S типу String можна таким чином:

S:=Table1.Field[0]. AsString;

Властивості об'єкта tField для доступу до значень полів.

Властивість

тип

AsBoolean

Boolean

AsFloat

Double

AsInteger

Longint

AsString

String

AsDateTime

TdateTime

Value

Variant

У наступному фрагменті коду цілій змінній I присвоюється значення поля ‘OrderNo' у поточному записі таблиці:

I:=Table1.FieldsByName(‘OrderNo').AsInteger;

Х.Імена і номера полів

Для пошуку імені певного поля використовуйте властивість FieldName класу Tfield. Наприклад, у наступному фрагменті коду ім'я першого поля в поточній таблиці записується в змінну S типу String:

var

S:String;

begin

S:=Table1.Fields[0].FieldName;

end;

Таким же чином, знаючи ім'я поля, можна одержати його номер, використовуючи властивість FieldNo. У наступному фрагменті коду номер поля OrderNo поміщається в змінну I типу Integer:

var

I: integer;

begin

I:=Table1.FieldsByName('OrderNo'). FieldNo;

end;

Для визначення кількості полів, що утримуються в наборі даних, використовується властивість FieldList об'єкта TDataSet. Властивість FieldList являє собою лінійне уявлення усіх вкладених полів у таблицю.

XI.Маніпулювання полемо даних.

Нижче приведена послідовність дій, що необхідно виконати для редагування одного або декількох полів у поточному записі.

1.Викликайте метод Edit() набору даних для переключення в режим редагування.

2.Призначте нові значення необхідним полям.

3.Внесіть зміни в набір даних за допомогою виклику методу Post() або переміщення на новий запис, у результаті чого зміни будуть внесені автоматично.

Наприклад, типова процедура зміни запису виглядає так:

Table1. Edit;

Table1[‘Age']:=23;

Table1. Post;

Іноді потрібно працювати з наборами даних, доступними тільки для читання. Прикладом таких даних може бути інформація на компакт-диску або запит з автономним результуючим набором, не доступним для редагування. Перед тим, як починати спроби редагування даних, варто перевірити, чи не містить поточний набір дані, доступні тільки для читання. Для цього достатньо перевірити значення властивості CanModify. Якщо значення цієї властивості дорівнює True, редагування набору даних дозволяється.

Як і у випадку редагування, вставляти або добавляти запису в кінець набору даних можна таким чином:

1. Викликайте метод Insert() або Append() набору даних для переключення в режим вставки (Insert) або додавання (Append).

2. Присвойте значення полів нового запису набору даних.

3. Внесіть новий запис в набір даних за допомогою виклику методу Post() або переміщення на новий запис, у результаті чого зміни будуть внесені автоматично.

Коли ви знаходитеся в одному із режимів - Edit, Insert або Аррend (редагування, вставки або доповнення),- пам'ятаєте, що ваші зміни буд безумовно внесені при переміщенні від поточного запису до наступнго. Тому будьте уважні при використанні методів Next(), Prior(), First(), Last() і MoveBy() у процедурах редагування записів.

Якщо буде потрібно скасувати внесені в запис, але ще не зафіксовані в наборі даних зміни, це можна зробити за допомогою виклику методу Cancel(). Наприклад:

Table1. Edit;

Table1['Age']:=23;

Table1. Cancel;

Метод Cancel() відміняє внесені, але не зафіксовані зміни і повертає набір даних із режиму Edit, Append або Insert у режим Browse.

Метод Delete() видаляє поточний запис із набору даних. Наприклад, у наступному фрагменті коду видалиться останній запис у таблиці;

Table1. Last;

Table1. Delete;

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