logo
Delphi 7

1.4 Робота програми

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

Процедура активізації форми.

Першою процедурою, що виконується при запуску програми є процедура активації форми. Вона реалізується за допомогою такого коду:

procedure Tform1.FormActivate(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

Table1.Active:=True;

end;

Результатом виконання цієї процедури є активізація створеної форми завдяки присвоєнню компоненту Table1.Active значення True, що значить активізацію файлу даних і відкриття файлу таблиці. Компонент DataSource (джерело даних) забезпечує звязок компонента відображення-редагування даних (наприклад, компонента DBGrid) і джерела даних, в якості якого може виступати таблиця (компонент Table) або результат виконання SQL запиту до таблиці (компонент SQL). Компонент DataSource дозволяє оперативно вибирати джерело даних, використовувати один і той же компонент, наприклад, DBGrid для відображення даних з таблиці або результату виконання SQL запиту до цієї таблиці.

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

Процедура обробки події “клік на кнопці “Всі записи”

При натисканні на кнопку “Всі записи”, що виглядає так

виконується процедура обробки цієї події. Ця процедура має такий вигляд:

rocedure TForm1.Button2Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

end;

Результатом виконання цієї процедури є вивід на екран всього списку студентів, що міститься в таблиці. Загальна форма після виконання цієї процедури має вигляд, представлений на рисунку 2.

Для перегляду змісту стовпчиків і рядків цієї таблиці використовуються полоси прокрутки.

Процедура обробки події “клік на кнопці “Запит”

Рисунок 2 - Загальна форма додатку після виконання процедури “клік на кнопці “Всі записи”

Процедура обробки події “клік на кнопці “Запит”, що має вигляд, алгоритм роботи якої представлений у додатку В, виглядає так:

procedure TForm1.Button1Click(Sender: TObject);

var

styd: string[255];

begin

styd:=InputBox(Вибір інформації з бази данних,Вкажіть прізвище, ім"я та по батькові студента,);

if styd<> then

begin

with form1.Query1 do begin

close;

SQL.Clear;

SQL.Add(SELECT Spec, styd, ker, grup, mecto, term, dok, oc);

SQL.Add(FROM ":Студенти-практиканти:Робоче мiсце керiвника практики.db");

SQL.Add(WHERE);

SQL.Add((styd="+styd+"));

SQL.Add(Order by Styd);

open;

end;

if Query1.RecordCount<>0 then

DataSource1.DataSet:=Query1

else begin

ShowMessage(Даних на такого студента немає);

DataSource1.DataSet:=Table1;

end;

end;

end;

При натисканні на цю кнопку спочатку змінній styd, що представляє собою заголовок стовпчика таблиці, у якому містяться прізвища та імена студентів, присвоюється значення InputBox, в результаті чого на екран виводиться вікно запиту на окремого студента. Це вікно має вигляд, який представлено на рисунку 4:

Рисунок 3 - Вікно запиту на окремого студента

Далі у це вікно користувач повинен ввести прізвище, імя та по батькові будь-якого студента з таблиці (бажано).

Процедура обробки події приймає від користувача рядок (щойно введений) і записом рядків у властивість SQL формує текст запиту. Після цього ця процедура викликом методу Open активізує виконання запиту.

Компонент Query (запит) схожий на компонент Table, але, на відміну від останнього, він представляє не всю базу даних (всі записи), а тільки її частину - записи, що задовольняють критерію запиту.

Для того, щоб під час розробки програми задати, яка інформація буде виділена з бази даних у результаті виконання запиту, властивість SQL повинна містити запит на вибірку даних, що представлений на мові SQL.

В загальному випадку запит на вибірку з таблиці даних виглядає так:

SELECT Список полів таблиці

FROM Таблиця

WHERE

(Критерій)

ORDER BY Список Полів таблиці

де:

SELECT - команда вибору записів з таблиці і виводу складу полів, імена яких вказані в списку;

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

WHERE - параметр, яки задає критерій вибору. В найпростішому випадку критерій - це інструкція перевірки складу поля;

ORDER BY - параметр, який задає умову, в відповідності до якої будуть упорядковані записи, що задовольняють критерію запиту.

Запит може бути сформований і записаний у властивість SQL під час розробки форми або під час роботи програми.

Потрібно звернути увагу на те, що перед зміною властивості SQL запит повинен бути закритий за допомогою метода close (тут потрібно згадати, що результат виконання запиту - це файл даних (таблиця), який створюється у результаті виконання запиту).

Отож програма закриває результат виконання попереднього запиту за допомогою метода close, знищує текст попереднього запиту за допомогою метода Clear та формує новий запит, що має такий вигляд:

with form1.Query1 do begin

close;

SQL.Clear;

SQL.Add(SELECT Spec, styd, ker, grup, mecto, term, dok, oc);

SQL.Add(FROM ":Студенти-практиканти:Робоче мiсце керiвника практики.db");

SQL.Add(WHERE);

SQL.Add((styd="+styd+"));

SQL.Add(Order by Styd);

Далі, як вже було сказано вище програма за допомогою метода Open активізує виконання запиту.

Наступний крок програми - це дії з отриманим результатом виконання SQL запиту, а саме: програма застосовує інструкцію вибору if. Якщо результат SQL запиту не рівний нулю (ця умова задається за допомогою рядка if Query1.RecordCount<>0 then), тобто прізвище, імя та по батькові студента, що введені в вікно запиту існують в таблиці, то програма відображає результат виконання запиту тобто знайдені прізвище, імя та по батькові, а також зміст стовпчиків (полей), які вказані у списку команди SELECT тобто спеціальність студента, прізвище, імя та по батькові керівника практики, дані на самого студента, групу, місце практики, термін практики, шлях доступу до відповідного документа, а також оцінку за проходження практики (рядок, що керує виводом такий: DataSource1.DataSet:=Query1 ).

Зображення, що виникає на екрані, а саме дані на окремого студента представлене на рисунку 4.

Рисунок 4 - Вікно виводу даних на окремого студента (результат виконання запиту)

У процесі роботи програми, а саме під час введення інформації на окремого студента користувач може помилитися в написанні прізвища або ввести дані на студента якого просто не існує в таблиці.

Обробка цієї ситуації відбувається за допомогою оператора else, який доповнює інструкцію if. В результаті виникнення подібного випадку оператор else передбачає вивід на екран повідомлення про помилку, що забезпечується командою ShowMessage.

Повідомлення, що виникає на екрані у результаті введення неправильних даних або помилки в їх написанні показано на рисунку 5.

Рисунок 5 - Повідомлення про помилку у написанні або невірні дані

Редагування записів бази даних

Редагування записів в базі даних стає можливим завдяки створенню на загальній формі додатку компонента DBNavigator. Цей компонент представляє собою набір кнопок, при натисканні на які під час роботи програми відбувається переміщення вказівки поточного запису до слідую чого, попереднього, першого чи останнього запису у базі даних, а також додавання до файлу даних нового запису, знищення поточного запису.

Цей компонент має вигляд, що представлений на рисунку 6.

Рисунок 6 - Компонент DBNavigator

Таблиця 2 містить опис дій, які виконуються в результаті натискання на відповідній кнопці компонента DBNavigator.

Таблиця 2 - Кнопки компонента DBNavigator

Вигляд кнопки

Назва кнопки

Позначення

Дія, що виконується

До першого

nbFirst

Вказівка поточного запису переміщується до першого запису файлу даних

До попереднього

nbPrior

Вказівка поточного запису переміщується до попереднього запису файлу даних

До наступного

nbNext

Вказівка поточного запису переміщується до слідуючого запису файлу даних

До останнього

nbLast

Вказівка поточного запису переміщується до останнього запису файлу даних

Добавити

nbInsert

В файл даних добавляється новий запис

Видалити

nbDelete

Знищується поточний запис файлу даних

Редагування

nbEdit

Встановлює режим редагування поточного запису

Зберегти

nbPost

Зміни, внесені в поточний запис, записуються в файл даних

Відмінити

Cancel

Відмінює внесені в поточний запис зміни

Обновити

nbRefresh

Записує внесені зміни в файл

Вихід з програми

Процедурою обробки цієї події є процедура закриття форми, що має такий програмний код:

procedure TForm1.Button3Click(Sender: TObject);

begin

Form1.Close;

end;