Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика_Delphi.doc
Скачиваний:
11
Добавлен:
25.08.2019
Размер:
2.92 Mб
Скачать

Лабораторна робота № 19 Створення проекту «Довідник по тваринах»

Завдання. Створити проект, за допомогою якого користувач зміг би виконувати програмну модифікацію таблиці БД « Тварини».

Аналіз проекту. В попередньому проекті для забезпечення «ручного» редагування БД використовувались компоненти DBGrid та DBNavigator. Щоб набір даних можна було змінювати, необхідно, щоб для нього була встановлена можливість модифікації. Для компонента Table можливість модифікації задасться присвоєнням властивості ReadOnly значення False (за замовчуванням). Якщо ця властивість має значення True, то будь-які зміни (як візуальні, так і програмні) будуть заборонені. Для організації програмної модифікації бази даних використовується ком­понент Table (вкладка BDE палітри компонентів), оскільки саме він забез­печує безпосередній зв'язок з фізичною таблицею БД, яка розташована на диску.

Наведемо властивості й методи цього компонента, які використаємо для програмної модифікації БД «Тварини»:

властивість RecNo - визначає номер поточного запису;

метод Locate - забезпечує пошук запису, який містить задані поля та задовольняє умови пошуку;

метод InsertRecord - вставляє новий запис до поточної позиції курсора й одночасно задає значення всіх або деяких полів;

метод Edit - слугує для переведення набору даних у режим редагування;

метод Post - записує зміни, які користувач вніс при редагуванні;

метод SetFields - використовується для зміни значень усіх або деяких полів поточного запису;

метод Delete - вилучає поточний запис.

Алгоритм розробки проекту

1. Створити папку D:\Delphi\Pract_19.

2. За допомогою програм SQL Explorer та DatabaseDesktop створити БД «Тварини», запис якої містить поля: назва тварини (символьне); довжина тіла (числова); вага тіла (числова).

3. Створити нову форму, розмістити на ній необхідні компоненти й пов'язати ці компоненти з БД «Тварини» (див. проект «Телефонна книга») (рис. 35).

4. Розмістити на фі рмі ,ри однорядкові редактори Edit1-Edit3, компоненти Label1-Labe3 для підпису цих полів введення даних та три кнопки Button1 («Добавити»), Buttou2 («Редагувати»), Button3 («Вилучити»). Кнопка «Добавити» забезпечуватиме внесення в БД нового запису. При цьому обов'язковою умовою є те, що мають бути введені всі дані. Якщо користувач спробує додати до БД новий запис, а там уже є дані про цю тварину, то виводиться відповідне повідомлення і запис не додається. За допомогою кнопки «Редагувати» можна змінити поточний запис відповідно до полів Edit1—Edit3. Кнопка «Вилучити» дає змогу вилучити поточний запис.

5.Запрограмувати кнопки натискання на «Добавити», «Редагувати», "Вилучити», скориставшись при цьому описаними вище властивостями і методами (див. лістинг програми).

6. Зберегти проект в папці D:\Delphi\Pract_19.

Лістинг програми:

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;

var Form1: TForm1;

flag:boolean;

dlina, massa: real;

implementation {$R *.dfm}

procedure proverka; //процедура перевірки корект­ності введених значень

begin

flag:=false;

if forml.Edit1.Text<>’ ' then

begin

try

dlina:=StrToFloat(form1.edit2.text);

massa:=StrToFloat(form1.edit3.text);

except

MessageDlg('Помилка при введенні довжини або ваги тіла!',mtError,[mbOK], 0) ;

exit; end;

flag:=true;

end

else

MessageDlg ( ‘Назву тварини не вказано!', mtError,[mbOK],0);

end;

procedure TForm1.Button1Click(Sender: TObject); //процедура кнопки «Добавити»

begin

proverka;

if flag then

begin

if not Table1.Locate('Animal', Edit1.Text, [loCaseinsensitive]) then

begin

Table1.InsertRecord([Edit1.Text,dlina,massa]);

Edit1. Text: = ‘ ' ;

Edit2 . Text: = ‘ ‘ ;

Edit3 . Text: = ‘ ‘

end

else

MessageDlg(‘Така тварина вже є БД!',mtInformation,[mbOK], 0) ;

end; end;

procedure TForm1.Button2Click(Sender: TObject); //процедура кнопки «Редагувати»

var

num_rec:integer;

begin

proverka; if flag then

begin

num_rec:=Table1.RecNo;

if not Table1.Locate(‘Animal', Editl.Text, [loCaseinsensitive])then

begin Table1.Edit;

table1.SetFields([Edit1.text,dlina,massa]);

end

else

begin

if num_rec=Table1.RecNo then

begin

Tablel.Edit;

Table1.SetFields([Edit1.text,dlina,massa]);

Table1.Post;

Editl.Text: = '';edit2.Text: = ‘ ‘;edit3.Text: = ‘ ‘

end

else

MessageDlg( 'Така тварина вже є в БД! ' , mtInformation, [mbOK],0);

end; end; end

procedure TForm1.Button3Click(Sender: TObject); //процедура кнопки «Вилучити»

begin

if MessageDlg('Вилучити поточний запис?',mtConfirmation,[mbYes,mbNo],0)=mrYes then Table1,Delete ;;

end;

procedure TForm1.Edit1KeyPress (Sender: TObject; varKey: Char); //забезпечення введення назви тварини тільки літерами

begin

if not (key in [#8,'A' . .'Z' ,' ']) then key:=#0;

end; end.