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

XVI.Підстановочні поля

Підстановочні (lookup) поля дозволяють створювати в наборі даних такі поля, значення яких будуть вибиратися з іншого набору даних. Для ілюстрації сказаного додамо таке поле до поточного проекту. Навряд чи по номері клієнта (поле CustNo таблиці ORDE можна буде пригадати його ім'я. Тому доцільно додати до таблиці Table1 підстановочне поле, пов'язане з таблицею CUSTOMER, із якої по номеру клієнта буде вибиратися його ім'я.

Спочатку помістите у форму другий об'єкт ТТаblе. Це буде об'єкт Таblе2. Потім знову відкрийте вікно New Field, для чого виберіть команду New Field у контекстному меню вікна редактора полів. Присвойте новому полю ім'я CustName і тип String. Розмір поля встановіт рівним 15 символам. Не забудьте встановити перемикач у групі Field Type у положення Lookup, у списку Dataset цього діалогового вікна виберіть значення Таblе2 - саме цей набір даних необхідно переглядати. У обох списках Key Fields і Lookup Keys цього діалогового вікна виберіть значення CustNo - це те загальне поле, за значенням якого буде виконуватися пошук і нарешті, у списку Result виберіть значення Contact - саме це поле необхідно відображати в нашому наборі даних.

XVII.Перетягування полів мишею

Інша, менш очевидна властивість вікна редактора полів - можливість перетягування полів із списку полів в утворювану форму. Цю властивість можна продемонструвати так: створіть новий проект, що буде містити в головній формі тільки об'єкт ТТablе. Встановіть властивість Table1.DatabaseName рівним DBDEMOS, а властивість Table1.TableName - рівним BIOLIFE.DB. Відкрийте для цієї таблиці вікно редактора полів і додайте всі поля таблиці в список полів набору даних. Тепер з'явилася можливість перетягнути одне або декілька полів із вікна редактора полів у головну форму.

Відзначимо декілька особливостей цієї процедури, по-перше Delphi розпізнає, тип що поміщається у форму поля і створює відповідний елемент керування для відображення його даних (наприклад, для рядкового поля створюється об'єкт класу TDBEdit, а для графічного поля - обєкт класу TDBimage). По-друге Delphi перевіряє, чи існує об'єкт класу TDataSource, пов'язаний із цим набором даних. Якщо це так, саме він ставиться у відповідність новому полю, у противному випадку об'єкт створюється наново.

VIII.Відновлення набору даних

При розробці програм необхідно враховувати, що набір даних, із яким ви працюєте, нахадится в постійному русі. Його записи постійно добавляються, видаляються або модифікуються, особливо при роботі в локальній мережі. Тому, зрідка необхідно перечитувати інформацію про набір даних із диска або з пам'яті для відновлення вмісту набору даних,що відображається у формах.

Обновити набір даних можна за допомогою методу Refresh() компонента TdataSet. Функціонально він нагадує послідовний виклик для набору даних методів Close() і Open(), але виконується декілька швидше. Метод Refresh() завжди намагається зберегти поточний запис(якщо це можливо).

XIX.Зміна стану набору даних

Іноді буває необхідно уточнити, у якому режимі знаходиться таблиця(Edit або Append) і чи активна вона взагалі. Одержати цю інформацію можна за допомогою властивості State компонента TdataSet.

Можливі значення властивості TdataSet. State

Значення

Опис

dsBrowse

Набір даних знаходиться в режимі Browse (звичайний режим перегляду даних)

dsCalcFields

Викликано оброблювач події onCalcFields, і значення полів запису в даний момент перераховуються.

dsEdit

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

dsInactive

Набір даних закритий

DsInsert

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

DsSetKey

Набір даних знаходиться в режимі задання ключа

DsNewValue

Набір даних знаходиться у тимчасовому стані, коли здійснюється доступ до властивості NewValue

DsOldValue

-//- OldValue

DsCurValue

-//- CurValue

DsFilter

Виконується фільтрація даних

DsBlockRead

Набір даних буферизується

DsInternalCalc

Обчислюється значення обраховочного поля

DsOpening

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

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