Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода БД Delphi.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
834 Кб
Скачать
☆

Завдання:

  1. Для будь-якого набору даних створити поле, що обчислюється.

  2. Для набору даних, зв’язаного з підпорядкованою таблицею бази даних (ТБД), створити нове поле вибору даних для автоматичного занесення інформації в підпорядковану ТБД з головної таблиці (зв’язок типу “один-до-багатьох”).

  3. Розробити форму для роботи з двома наборами даних, один з яких має lookup-поле та поле, що обчислюється.

  4. Використати редактор стовпців (Columns Editor) для зміни параметрів компонентів TDBGrid.

Обов’язкові засоби: TFild, TFildEditor.

Зміст звіту.

  1. Опис розробленої форми.

  2. Висновки по роботі.

Порядок виконання роботи Створення полів, що обчисляються

Для створення поля, що обчисляється за значеннями інших полів, необхідно:

  1. У редакторі полів створити нове поле, помітивши його як Calculated. Для цього потрібно за допомогою миші зробити поточним необхідний НД, натиснути праву кнопку миші, вибрати в меню Field Editor, знову натиснути праву кнопку миші і вибрати в меню New Field. Потім у вікні діалогу необхідно зазначити ім'я поля, його тип (Type) і для текстових полів - довжину (Size). Для нового поля буде створений компонент TField, доступ до якого можна здійснювати в редакторі полів.

  2. Для компонента НД, до якого належить поле, що обчисляється, необхідно визначити оброблювач події OnCalcFields. Наприклад, необхідно занести в поле Vychosl НД Table1 значення 'Так', якщо в полі Present цього запису міститься значення True. У противному випадку в поле Table1Vychosl занести порожнє значення.

procedure TGridForm. TablelCalcFields(DataSet: TDataSet);

begin

if Table1Present. Value then

Table1Vychosl.AsString := 'Так'

else

Table1Vychosl.AsString:= ";

end;

Подія OnCalcFields виникає щоразу, коли курсор (покажчик запису) переміщується в НД від запису до запису. Вона виникає і при ініціалізації НД (після відкриття), а також після фільтрації записів у НД, що також пов'язано зі зміною положення покажчика запису.

Крім того, якщо властивість набору даних AutoCalcFields встановлена в True, подія OnCalcFields наступає також і при модифікації значень інших полів у режимах dslnsert і dsEdit даного НД або НД, реляційно з ним пов'язаного (коли обмеження цілісності явно встановлені в самій ТБД. ).

Процедура-оброблювач події OnCalcFields реалізує алгоритм обчислення значення поля або групи полів. У цьому оброблювачі значення може бути присвоєно тільки полю, що обчислюється, але не полю, визначеному в структурі таблиці БД.

Створення полів вибору даних (lookup - полів).

Поля вибору даних одного НД містять значення поля (полів) з іншого НД. НД-джерело поля вибору зв’язується по ключу з НД-власником поля вибору даних. Поле вибору даних доступне тільки для читання. Звичайно НД-джерело і НД-власник поля вибору даних зв’язані реляційним відношенням “один-до-багатьох“, рідше “один-до-одного“.

Для визначення поля вибору даних необхідно створити нове поле в редакторі полів, зразу ж встановивши радіо-групу FieldType в значення Lookup.

Далі встановлюються значення властивостей:

DataSet – ім’я НД-джерела значень для поля вибору даних;

KeyFields – індексні поля НД-власника поля вибору даних. За цими полями НД-власник з’єднується з НД-джерелом значень поля вибору даних. Якщо в індексі є декілька полів, вони перераховуються через крапку з комою;

LookupKeys – індексні поля НД-джерела значень для поля вибору. За значеннями цих індексних полів встановлюється зв’язок набору-джерела зі значеннями індексних полів НД-власника поля вибору (вони вказані в параметрі KeyFields). Якщо в індексі є декілька полів, вони перераховуються через крапку з комою;

Result Field – поле НД-джерела, що повертається в якості результату. Необхідно, щоб тип поля, що створюється, співпадав з типом поля результату.

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

Поля вибору даних часто використовуються для автоматичного занесення інформації в дану ТДБ з іншої ТДБ. Значення параметрів поля вибору в цьому випадку можна читати так: “Виходячи з реляційного зв’язку по полю (полях), вказаному у властивості KeyField (розглядаємо НД-власника) і по полю (полях), вказаному у властивості LookupKeys (НД-джерела, зазначеного у властивості DataSet) заповнювати поле (поля), вказане в KeyFields значенням (значеннями), взятими з запису, що буде вибраний з меню”. В меню показується тільки те поле НД-джерела, що вказане у властивості ResultField. Властивість

property LookupCache: Boolean;

визначає, чи будуть значення полів вибору даних зберігатися в кеш-пам’яті (True) чи ні (False).

Приклад.

Практична робота № 5

Тема: Використання контейнера TDataModule

Мета: Набуття практичних навиків створення модулів даних у Delphi. Аналіз стану НД