Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Створення пошукових полів.doc
Скачиваний:
1
Добавлен:
06.09.2019
Размер:
252.93 Кб
Скачать

Лекція № 24, 25 (4 години)

Тема «Додавання, модифікація та знищення даних з БД через Delphi. Створення пошукових полів»

Мета: навчитися здійснювати додавання, модифікацію та знищення даних з БД, яка створена в СКБД Access через середовище Delphi. Вміти встановлювати зв'язок між таблицями для обрання даних з них.

Література

  1. «Работа с базами данных в Delphi» - Гофман В. Э., Санкт-Петербург: БХВ, 2001

  2. «Программирование баз данных в Delphi 7. Учебный курс», В. В. Фаронов

  3. «Delphi 5 руководство разработчика баз данных» - Шумаков, В. В. Фаронов

  4. «Delphi 2005 Разработка приложений для баз данных и Интернета» - В. В. Фаронов, Питер, 2006 р.

Хід заняття

І. Організаційний момент

а) готовність групи до заняття;

б) перевірка присутніх.

ІІ. Актуалізація опорних знань студентів

а) повідомлення теми та мети заняття;

б) повідомлення девізу, під яким будете працювати;

в) відповіді на запитання раніше вивченних лекцій.

ІІІ. Виклад нового матеріалу

План

  1. Робота з компонентами ADOTable та DataSource та з редактором їх полів.

  2. Створення процедури для додавання нових даних в DBGrid через кнопку.

  3. Створення процедури для збереження нових даних в DBGrid через кнопку.

  4. Створення процедури для знищення даних в DBGrid через кнопку.

  5. Додавання нових даних до БД через виклик пункта меню та відповідної форми на додавання.

  6. Редагування даних БД через виклик пункта меню та відповідної форми на редагування.

  7. Знищення даних з БД через виклик пункта меню та відповідного повідомлення на підтвердження або скасування знищення.

ІV. Узагальнення та систематизація знань

V. Підведення підсумків заняття

VІ. Домашнє завдання: вивчити матеріал лекції, знати відповіді на такі питання лекції:

  1. Які властивості треба використовувати для налаштування компонента ADOTable?

  2. Які властивості треба використовувати для налаштування компонента DataSource?

  3. Як здійснити виклик редактору полів для таблиці?

  4. Для чого викликається метод Insert при написанні процедури на додавання нового запису до таблиці БД?

  5. Для чого викликається метод SetFocus при написанні процедури на додавання нового запису до таблиці БД?

  6. Для чого призначений метод Post при написанні процедур?

  7. Для яких цілей використовується компонент MainMenu?

  8. Як зробити неможливим редагування даних в сітці DBGrid?

  9. Для чого обирається значення poMainFormCenter властивості Position при роботі з формами в Delphi?

  10. Які властивості треба налаштовувати для компонента DBEdit?

  11. Які властивості треба налаштовувати для компонента DBCheckBox?

  12. Які властивості треба налаштовувати для компонента DBLookupComboBox?

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

1. Key1 – лічильник (ключове поле);

2. Название города – текстове поле розміром в 30 символів.

Рис. 1.1 Таблиця «Справочник городов»

Збережіть нову таблицю з ім’ям «Справочник городов». Тепер БД складається з двох таблиць:

1. Справочник;

2. Справочник городов.

Відчиніть проект створений в попередній частині та модуль DataModuleUnit. Додайте сюди компонент DataSource (назвіть його TownSource) та ADOTable (назвіть його TownTable). Після цього у компонента TownSource в властивості DataSet вкажіть таблицю TownTable.

Налаштуйте TownTable на відображення «справочника городов». Для цього:

1. В властивості Connection вкажіть компонент ADOConnection1, який вказує на нашу БД.

2. В властивості TableName вкажіть таблицю Справочник городов.

3. Встановіть властивість Active в True, щоб активізувати таблицю.

Увійдіть в редактор полів таблиці TownTable та додайте всі поля. Зробіть поле Key1 невидимим, тому що це лічильник та користувачу він взагалі не потрібний.

Рис. 1.2 Редактор полів таблиці

Створіть нову форму для редагування «справочника» та збережіть форму в модулі під іменем TownBookUnit. Саму форму назвіть TownBookForm. Підключіть до нової форми модуль DataModuleUnit, щоб звідси можна було б отримати доступ до компонентів для роботи з БД. Для цього з меню File оберіть пункт Use Unit та в вікні, яке з’явиться, вкажіть модуль DataModuleUnit та натисніть ОК.

Рис. 1.3 Додавання модуля DataModuleUnit

Помістіть на форму сітку DBGrid та в властивості DataSource вкажіть таблицю «справочника городов» - DataModule1.TownSource. Можна все це діло красиво оформити та додати кнопку ОК, для зачинення вікна «справочника». Вікно редактору «справочника городов» зображене на рис. 1.4.

Рис. 1.4 Вікно «справочника городов»

Для більшої красоти можна додати на форму кнопки «Добавить», «Сохранить» та «Удалить» для додавання, знищення та збереження рядків довідника.

Рис. 1.5 Оновлена форма довідника

При натисканні кнопки «Добавить» треба написати наступний код:

procedure TTownBookForm.AddBtnClick(Sender: TObject);

begin

DataModule1.TownTable.Insert;

DBGrid1.SetFocus;

end;

Метод Insert таблиці TownTable додає новий рядок. У другому рядку викликається метод SetFocus нашої сітки, щоб фокус введення перейшов на нього. Після натискання кнопки «Добавить» фокус потрапляє на неї, але після додавання нового рядка, логічним буде перенести фокус на сітку, тому що користувач буде вводити назву міста для нового рядка.

При натисканні кнопки «Сохранить» треба написати наступний код:

procedure TTownBookForm.SaveBtnClick(Sender: TObject);

begin

if DataModule1.TownTable.Modified then

DataModule1.TownTable.Post;

end;

Якщо поточний рядок був змінений, то в властивості Modified буде true, інакше false. А якщо відбулись зміни, то їх треба зберегти, інакше якщо користувач зачинить вікно, то дані можуть не зберегтися. Для збереження змін використовується метод Post.

При натисканні кнопки «Удалить» треба написати наступний код:

procedure TTownBookForm.DelBtnClick(Sender: TObject);

begin

DataModule1.TownTable.Delete;

end;

Метод Delete знищує поточний рядок з таблиці.

Все. Тепер перейдіть до головної форми та створіть меню або кнопку, для виклику «справочника городов».

Рис. 1.6 Меню виклику «Справочника городов»

По події OnClick від меню пишемо код виклику вікна «справочника городов»:

procedure TForm1.TownBookMenuItemClick(Sender: TObject);

begin

TownBookForm.ShowModal;

end;

Якщо не був доданий модуль «справочника городов» до головної форми та буде зроблена спроба відкомпілювати проект, то з’явиться наступний запит:

Тут мова йде про те, що форма TownBookForm оголошена в модулі TownBookUnit та твоя форма не має ссилки на нього. Тобі пропонується додавати її автоматично. Оберіть Yes та модуль буде доданий автоматично, після цього можна знову компілювати проект не роблячі жодних змін. Запустіть проект та перевірте роботу програми.

Запустіть програму, визовіть «Справочник городов» та додайте туди декілька рядків.

Рис. 1.7 Справочник в дії

Зараз в нас є «справочник городов» та ми можемо підв’язати його дані до головної таблиці. Але перед цим трохи покращемо форму. Виділіть сітку DBGrid1 на головній формі та в властивості Options відключіть можливість редагування даних в сітці – в dgEditing вкажи false:

Рис. 1.8 Відключення можливості редагування

Зараз редагування даних в сітці неможливе, тому ми зробимо для цього окремі вікна. В головному меню створи пункт «Редактирование» з наступними підпунктами:

1. Добавить запись;

2. Редактировать запись;

3. Удалить запись.

На рисунке 1.9 можно побачити результат цього меню.

Рис. 1.9 Меню «Редактирование»

Тепер створимо нову форму, яка буде використовуватися для редагування даних кожного запису. Створи форму та збережи її під іменем EditFormUnit. Саму ж форму назовемо EditRecordForm. Зараз зміни в формі наступні властивості:

  • BorderStyle - bsSingle

  • Position – poMainFormCenter.

Для початку підключить до нової форми модуль з даними, тому що необхідно буде мати до них доступ. Для цього оберіть з меню File пункт Use Unit, в вікні, яке з’явиться, оберіть DataModuleUnit та натисніть ОК.

Тепер подивись на вигляд форми для редагування даних (рис. 1.10)

Рис. 1.10 Вікно редагування даних

В цьому вікні декілька компонентів для прикрашання вигляду (картинка, панель білого кольору).

Навпроти надписів Фамилия, Имя, Телефон, e-mail та Дата рождения знаходяться компоненти DBEdit з закладки Data Controls. Ці компоненти представляють собою прості рядки введення типу TEdit, лише вони вміють автоматично редагувати вказанні поля в БД. Щоб компонент бачив дані з необхідного поля треба вказати у нього в властивості DataSource необхідну таблицю (DataModule1.DataSource1, як це робили з сіткою редагування), а в властивості DataField вказати поле, яке треба редагувати.

Для властивості «Мобильник» краще було б використовувати компонент DBCheckBox. У нього також треба вказати поле в таблиці, як й у компонентів DBEdit.

Саме цікаве – поле «Город». Назви міст зберігаються в окремому довіднику, а в головній таблиці повинні зберігатися лише числа – номери рядків із довідника міст. Припустимо, що в виділенному записі треба вказати місто «Москва», яке йде під номером 2 (поле Key1 для цього рядка в довіднику міст дорівнює 2). В цьому випадку, в основному довіднику в полі «Город» треба вказати лише цифру 2, а назву міста в будь-який момент можно знайти в довіднику міст, за полем Key1. Так як воно унікальне (лічильник), то проблем не виникне.

Щоб все це реалізувати достатньо поставити компонент DBLookupComboBox з закладки Data Controls. Тепер треба вказати в нього в властивості DataSource головну таблицю (DataModule1.DataSource1), яка буде редагуватися, а в властивості DataField вказати поле, яке треба редагувати – «Город».

Компонент DBLookupComboBox виглядає як випадаючий список (схожий на TComboBox). В якості елементів випадаючого списка можна вказати таблицю. В властивості ListSource треба вказати таблицю, з якої будуть обиратися елементи для випадаючого списка. Вкажемо наш довідник міст - DataModule1.TownSource.

В властивості ListField вкажемо поле з цієї таблиці, яке буде використовуватися для заповнення випадаючого списка – «Название города». В властивості KeyField треба вказати поле, значення якого буде заноситися в вказане поле головної таблиці - Key1.

По натисканню кнопки «Сохранить» напишіть:

procedure TEditRecordForm.BitBtn1Click(Sender: TObject);

begin

if DataModule1.BookTable.Modified then

DataModule1.BookTable.Post;

Close;

end;

В першому рядку здійснюється перевірка, якщо таблиця була змінена (DataModule1.BookTable. Modified дорівнює true), то прийняти зміни DataModule1.BookTable.Post.

Тепер перейдіть в головну форму та по натисканню пункту меню «Добавить запись» напишіть наступне:

DataModule1.BookTable.Insert;

EditRecordForm.ShowModal;

Тут в першому рядку я вставляю в головну таблицю новий рядок. В другому рядку я відображаю вікно редагування даних.

По натисканню пункта меню «Редактировать запись» напишіть просто код відображення вікна редагування - EditRecordForm.ShowModal;.

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

Рис. 1.11 Вікно редагування даних

В полі «Город» було обране значення «Ростов-на-Дону». Після натискання кнопки «Сохранить» вікно зачинеться. Подивись на сітку. В полі «Город» нового рядка можна побачити цифру 3. Це значить, що в довіднику міст є запис зі значенням в полі Key1, яке дорівнює 3 та в поле «Название города» вказана назва, яка була обрана. Відчиніть таблицю через Access та подивіться.