Основні прийоми роботи з TDataSet - Інформатика, програмування
3.1 Основні прийоми роботи з TDataSet
Відкриття та закриття DataSet
Є два різні способи відкрити таблицю під час виконання програми. Можна написати наступний рядок коду:
Або можна встановити властивість Active рівну True:
Немає ніякої різниці між результатом цих двох операцій. Метод Open, однак, сам закінчується встановленням якості Active в True, так що може бути трохи ефективніше використовувати властивість Active безпосередньо.
Також, як є два способи відкрити таблицю, так і є два способи закрити її. Найпростіший спосіб просто викликати Close:
Або можна написати: Table1.Active := False;
Навігація (Переміщення за записами)
Великий набір методів та властивості TDataSet забезпечує все, що потрібно для доступу до будь-якого конкретного запису всередині таблиці:
Огляд їх функціональних можливостей описаний в таблиці методів класу TDadaSet.
TDataSet.BOF - read-only Boolean властивість, що використовується для перевірки, чи знаходиться курсор на початку таблиці. Властивості BOF повертає true у трьох випадках:
- Після того, як файл було відкрито;
- Після того, як зголосився метод TDataSet.First;
- Після того, як не здійснився виклик методу TDataSet.Prior.
Перші два пункти – очевидні. Коли таблиця відкривається, Delphi поміщає курсор на перший запис; коли викликається метод First, Delphi також переміщає курсор початку таблиці. Третій пункт, однак, вимагає невеликого пояснення: після того, як викликався метод Prior кілька разів, курсор міг дістатися початку таблиці, і наступний виклик Prior буде невдалим - після цього BOF і повертатиме True.
Наступний код показує загальний прикладвикористання Prior, коли курсор потрапляє до першого запису:
while not Table.Bof do
Цикл буде продовжуватися доти, доки виклик Table1.Prior не зможе більше переміщати курсор на попередній запис у таблиці. У цей момент BOF поверне True та програма вийде з циклу.
Все сказане щодо BOF також можна застосувати і до EOF. Іншими словами, код, наведений нижче, показує простий спосіб пробігти по всіх записах в a dataset:
while not Table1.EOF do
EOF повертає True у наступних трьох випадках:
- Після того, як файл був відкритий;
- Після того, як зголосився метод TDataSet.Last;
- Після того, як не здійснився виклик методу TDataSet.Next
Єдина навігаційна процедура, яка ще не згадувалась - MoveBy, яка дозволяє переміститися на N записів вперед або назад у таблиці. Якщо необхідно переміститися на два записи вперед, слід написати наступний оператор:
Prior та Next – це прості функції, які викликають MoveBy.
При використанні цієї функції необхідно завжди пам'ятати, що DataSet - це об'єкти, що змінюються, і запис, яка була п'ятою за рахунком в попередній момент, тепер може бути четвертою або шостою або взагалі може бути видалена.
У більшості випадків, коли потрібно отримати доступ з програми до індивідуальних полів запису, можна використовувати одну з таких властивостей або методів, кожен з яких належить TDataSet:
property Fields[Index: Integer];
function FieldByName(const FieldName: string): TField;
Властивість FieldCount повертає кількість полів у структурі запису. Якщо потрібно програмним шляхом прочитати імена полів, то використовується властивість Fields для доступу до них:
Коротше кажучи, індекс, що передається вFields (починається з нуля), і визначає номер поля якого Ви отримаєте доступ, тобто. перше поле - нуль, друге один, і таке інше.
Припустимо, що перше поле запису містить номер замовника, тоді код, показаний вище, повернув би рядок типу “1021”, “1031” чи “2058”. Якщо потрібно отримати доступ до цього змінного, як до числової величини, тоді треба використовувати AsInteger замість AsString. Аналогічно, властивості Fields включають AsBoolean, AsFloat та AsDate.
Можна використовувати функцію FieldsByName замість властивості Fields:
Як показано в прикладах вище, і FieldsByName, і Fields повертають ті самі дані. Два різні синтаксиси використовуються виключно для того, щоб забезпечити програмістів гнучким та зручним набором інструментів для програмного доступу до вмісту DataSet.
Властивість Fields дозволяє вибрати тип результату Ось список доступних методів, який можна знайти в описі класу TField:
Щоразу (коли це має сенс), Delphi зможе зробити перетворення. Наприклад, Delphi може конвертувати поле Boolean до Integer або Float, або поле Integer до String. Але не перетворюватиме String до Integer, хоча і може перетворювати Float до Integer.
Основні властивості, методи та події НД Властивості
| Властивість | Опис |
property Active: Boolean;
property BookMark: TBookMarkStr;
Використовується в нащадках для вказівки детального НД, у зв'язку один до багатьох
procedure AppendRecord(const Values: Array of const);