Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Методичка - Організація баз даних і знань.doc
Скачиваний:
60
Добавлен:
02.05.2014
Размер:
631.3 Кб
Скачать

Порядок виконання роботи

застосування повинно складатися з двох форм: перша - для перегляду інформації (містить компонент DBGrid для якого властивістьReadOnlyмає значенняTrue), друга - для редагування (містить компонентиTDBEdit, TDBLookupComboBoxта ін.). Додамо в застосування компонентTDataModuleі розмістимо в ньому компонентиTDataBase, TTable і TDataSource.

У батьківській формі встановимо властивість DBGrid1.DataSource= DataModule1.DataSource1; а у дочірній формі задамо властивостіDataSourceдля усіх компонентів, що працюють з окремими полями ТБД (компонентиTDBEdit, TDBLookupComboBoxта ін.). У батьківській і дочірній формах розмістимо компонентиTLabel, що відображатимуть повідомлення про поточний стан НД.

Батьківська форма містить кнопки “Вставити,“Змінити,“Вилучити. Дочірня форма містить кнопки“Запам'ятати, Скасувати.

Оброблювачі подій для батьківської форми:

// натиснута кнопка "Вставити"

procedure TParentForm.InsertButtonClick(Sender: TObject);

begin DataModule1.Table1.Insert;

ChildForm.ShowModal;

end;

// натиснута кнопка "Змінити"

procedure TParentForm.EditButtonClick(Sender: TObject);

begin DataModule1.Table1.Edit;

ChildForm.ShowModal;

end;

// натиснута кнопка "Вилучити"

procedure TParentForm.DeleteButtonClick(Sender: TObject);

begin IF MessageDIg('Підтвердити вилучення запису',

mtlnformation, [mbYes, mbNo], 0) = mrYes THEN

DataModule1.Table1.Delete;

end;

Оброблювачі подій для дочірньої форми:

// натиснута кнопка “Запам'ятати

procedure TChildForm.PostButtonClick (Sender: TObject;);

begin IF DataModule1.Table1.Modified THEN

DataModule1.Table1.Post;

// при успішному виконанні методу Postвиходимо з модальної форми

ChiIdForm.ModalResult := mrOk;

end;

// натиснута кнопка “Скасувати”(ModalResult = mrCancel)

procedure TChildForm.CancelButtonClick(Sender: TObject);

begin

DataModule1.Table1.Cancel;

end;

Пример.

Лабораторна робота № 6

Організація роботи з індексами

Мета:вивчення основ роботи з індексами.

Завдання:

Розробити застосування, яке дозволяє отримувати інформацію про індекси. Вивести в:

  • ListBox1імена всіх індексів ТБД, асоційованої зTable1;

  • Edit1.Textсписок полів індексу, чиє ім’я є поточним в ListBox1.

Примітка: необхідно збільшити у разі потреби кількість індексів таблиці щонайменше до трьох.

Обов’язкові засоби: TIndex Dets, GetIndex Names.

Зміст звіту.

  1. Опис застосування з зазначенням встановлених значень властивостей компонентів.

  2. Лістинги розроблених процедур та їх аналіз.

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

Порядок виконання роботи

Компонент TIndexDefs

Компонент TIndexDefsмістить інформацію про всі індекси таблиці бази даних, що оголошені в ній в поточний момент.TTableмає властивість

property IndexDefs:TIndexDefs;

яка містить посилання на об'єкт класу TIndexDefs. Тому для кожного компонентаTTableзавжди можна отримати інформацію про індекси даної ТБД через властивості і методиTIndexDefs.

Властивості:

property Count: Integer; - повертає число індексів;

property Item[Index:Integer]: TIndexDefs; -кількість об'єктів типуTIndexDefs,кожний з який містить інформацію про конкретний індекс.Index повинний належати діапазону [0..Count-1].

property Name:string;- повертає ім'я індексу;

property Fields:string; - повертає список полів, з яких побудований даний індекс;

property Options:TIndexOptions; -повертає характеристики індексу у вигляді множиниTindexOptions = set of(ixPrimary, ixUnique, ixDescending, ixNonMaintained, ixCaseInsensitive), деIxPrimary- визначає первинний індекс;ixUnique- визначає унікальний індекс;ixDescending- визначає індекс, побудований за зменшенням значень ключових полів;ixCaseInsensitive- визначає індекс, нечутливый до регістру літер.

Методи:

procedure Add(const Name, Fields:string,Options:TIndexOptions) -створює новий об'єктTIndexDef і поміщає його в колекцію TIndexDefs.Items;

procedure Update;-обновляє елемент колекції TIndexDefs.Items;

procedure Clear;- очищає елемент колекціїTIndexDefs.Items;

function IndexOff(const Name:string):integer; - повертає з колекціїTIndexDefs.Itemsіндекс, у якого властивістьNameзбігається з параметромNameданого методу.

function FindIndexForFields(const Fields:string): TIndexDefs;- відшукує індекс полів, що записані в рядкуFields.

procedure GetIndexNames List:TStrings- повертає в параметріListсписок імен індексів.

Приклад:Отримати інформацію про індекси у таблиці студенти.