Рисунок 2.8 - Схема структуры таблицы "Сотрудники радиостанции"
Схема структуры таблицы Obrabotka. db для сведений об обработке элементов вещания сотрудниками радиостанции приведена на рисунке 2.9.
Рисунок 2.6 - Схема структуры таблицы "Обработка элементов"
Рассмотрим содержимое основных пунктов меню главной формы приложения и действия, к которым приводит их выбор. Меню главной формы в различных режимах работы Дизайнера меню на этапе разработки приложения приведено на рисунке 2.10.
Рисунок 2.10 - Меню главной формы на этапе проектирования приложения
Подпункты меню, объединенные в пункт Системные, осуществляют общесистемные действия над содержимым и взаимосвязями файлов проекта. Подпункт Подключить таблицы приводит к проверке прав доступа пользователей и последующей активизации наборов данных для их использования компонентами для просмотра и редактирования данных. Подпункт Отключить таблицы приводит к деактивации наборов данных и к недоступности соответствующих данных в файлах таблиц.
Подпункты Резервное копирование и Восстановить позволяют путем вызова соответствующей функции Windows API осуществить резервное копирование файлов БД вместе с файлами индексов, которые зачастую разрушаются при работе с локальными БД с использованием машины баз данных фирмы Borland (BDE). Данное действие выполняется следующим образом:
CopyFile ('peredachi. db','copyperedachi. db', false);
На главной форме расположен компонент TPageControl, с помощью которого организована визуализация и возможность редактирования содержимого таблиц БД АРМ. Этот компонент является компонентом, позволяющим отказаться от использования множества форм. Он включает в себя коллекцию объектов типа TtabSheet, каждый из которых является отдельной страницей многостраничного компонента со своим набором элементов управления.
Переход между содержимым таблиц осуществляется с помощью закладок с поясняющими надписями (рисунки 2.11 - 2.16). Компоненты TDBGrid, с помощью которых выполнено табличное представление содержимого таблиц, позволяют ввести русскоязычные заголовки колонок и отформатировать их по желанию.
Рисунок 2.11 - Вид главной формы приложения при активной закладке Передачи.
Рисунок 2.12 - Вид главной формы приложения при активной закладке Элементы вещания.
Рисунок 2.13 - Вид главной формы приложения при активной закладке Поставщики.
Рисунок 2.14 - Вид главной формы приложения при активной закладке Сот рудники.
Рисунок 2.15 - Вид главной формы приложения для работы с БД при активной закладке Включение в сценарий.
Рисунок 2.16 - Вид главной формы приложения для работы с БД при активной закладке Обработка.
На рисунках 2.15-2.16, в табличных формах, соответствующих таблицам БД "Включение в сценарий" и "Обработка", с помощью которых осуществляется связь между основными таблицами БД, а также в таблицу "Элементы", распахивающиеся списки Наименование элемента, ФИО сотрудника и Наименование поставщика. Для этого в списки статических полей соответствующих компонентов TTable, располагающихся в модуле данных, добавлены Look-up-поля, которые в физической таблице БД не существуют, но позволяют пользователю выбирать из списка [12-13]. Например, выбираем в табличной форме Элементы вещания из списка поставщика элемента вещания его наименование, а в таблицу "Элементы" в поле Код поставщика автоматически будет внесен код, соответствующий выбору пользователя. Реализация в данном приложении такой технологии ведения БД и организации связи между записями различных таблиц существенно облегчают работу пользователя.
Для связного просмотра содержимого таблиц в данном проекте использована технология установления связей "Главная-подчиненная" ("Master-Detail") между наборами данных, представленными компонентами TTable, что позволяет пользователю видеть весь набор записей главной таблицы, менять в ней текущую запись, а в подчиненных таблицах видеть только записи, связанные с этой текущей. Связь "Передачи" - "Включение" - "Элементы вещания" - "Обработка" - "Сотрудники" организована программно:
frmDataModule. tbVkljuchenie. MasterSource: =frmDataModule. dsPeredachi;
frmDataModule. tbVkljuchenie. MasterFields: ='Cod_peredachi';
frmDataModule. tbElementy. MasterSource: =frmDataModule. dsVkljuchenie;
frmDataModule. tbElementy. MasterFields: ='Cod_elementa';
frmDataModule. tbObrabotka. MasterSource: =frmDataModule. dsElementy;
frmDataModule. tbObrabotka. MasterFields: ='Cod_elementa';
frmDataModule. tbSotrudniki. MasterSource: =frmDataModule. dsObrabotka;
frmDataModule. tbSotrudniki. MasterFields: ='Tab_nomer';
Форма для организации связи представлена на рисунке 2.17.
Рисунок 2.17 - Внешний вид диалогового окна для связного просмотра данных по выбранной передаче и входящих в нее элементах вещания.
Сортировка данных в табличных формах, представляемых пользователю в главном окне приложения, осуществляется в обработчике нажатия на независимый переключатель путем подключения созданных ранее индексов таблиц. Программно это происходит следующим образом.
procedure TfrmMain. CheckBox1Click (Sender: TObject);
begin
if CheckBox1. Checked=True
then
frmDataModule. tbPeredachi. IndexName: ='ixNaimen_Peredachi'
else
frmDataModule. tbPeredachi. IndexName: ='';
end;
Фильтрация данных в табличных формах, представляемых пользователю в главном окне приложения, осуществляется в обработчике нажатия на независимый переключатель путем заполнения свойства Filter компонентов TTable соответствующими значениями [14-15]. Программно это происходит следующим образом.
procedure TfrmMain. Button1Click (Sender: TObject);
begin
try
StrToDate (MaskEdit2. Text);
frmDataModule. tbVkljuchenie. Filter: =' [Data_prinjatia] ='+''''+MaskEdit2. Text+'''';
frmDataModule. tbVkljuchenie. Filtered: =True;
except
ShowMessage ('Введите правильную дату! ');
end;
end;
Запрос при разработке приложения в Delphi осуществляется с использованием компонента Tquery, который ответственен за реляционную обработку данных в таблицах. Построение запросов осуществляется статически, динамически (формируется программно) и параметрически (используются параметры, вводимые пользователем в компоненты). В данном дипломном проекте реализован статический запрос с использованием параметров, вводимых пользователем. В свойство SQL компонента Tquery записывается непосредственно текст запроса [13].
В качестве примеров обработки данных в БД АРМ реализованы следующие запросы.
Первый запрос. Выдать данные о заполнении планируемой передачи элементами вещания с подсчетом суммарного времени вещания.
Реализация запроса на языке SQL.
select a. Cod_peredachi, a. Naimen_peredachi, a. Dlitelnoct, sum (b. Dlitelnost_v_peredache) as Tekushaja_dlitelnost
from Peredachi a, Vkljuchenie b
where a. Cod_peredachi=b. Cod_peredachi and a. Naimen_peredachi=: Par1
group by a. Cod_peredachi, a. Naimen_peredachi, a. Dlitelnoct
В данной реализации параметр: Par1 задается пользователем с помощью компонента ТEdit:
Query1. ParamByName ('Par1'). Value: =Edit1. Text;
Результат выполнения приведен на рисунке 2.18.
Рисунок 2.18 - Результат выдачи данных о заполнении планируемой передачи элементами вещания по запросу
Второй запрос. Определить количество элементов вещания, поставленных каждым поставщиком.
Реализация запроса на языке SQL.
Select a. Cod_postavshika, a. Naimen_postavshika, count (*) as Kolvo_postavlennych_elementov
from Postavshiki a, Elementy b
where a. Cod_postavshika=b. Cod_postashika
group by a. Cod_postavshika, a. Naimen_postavshika
В данной реализации параметры не используются.
Результат выполнения приведен на рисунке 2.19.
Рисунок 2.19 - Результат выдачи данных о количестве элементов вещания, поставленных каждым поставщиком.
Третий запрос. Предъявить пользователю суммарные объемы обработки сотрудниками элементов вещания, сгруппированные по форматам их хранения.
Реализация запроса на языке SQL.
Select a. Format_chranenia, a. Ed_izmerenia, sum (a. "Ob,jem") as Obshij_objem_obrabotki
from Elementy a, Obrabotka b, Sotrudniki c
where b. Tab_nomer=c. Tab_nomer and b. Cod_elementa=a. Cod_elementa
group by a. Format_chranenia, a. Ed_izmerenia
В данной реализации параметры не используются.
Результат приведен на рисунке 2.20.
Рисунок 2.20 - Результат выдачи данных о суммарных объемах обработки сотрудниками элементов вещания, сгруппированных по форматам их хранения
Отчет с помощью компонентов Delphi закладки QReport организуется на отдельной форме, которая пользователю в процессе работы не предъявляется [15]. Внешний вид формы на этапе проектирования приведен на рисунке 2.21.
Рисунок 2.21 - Формы отчета на этапе проектирования
Просмотр и, по желанию пользователя, печать отчета осуществляется с помощью вызова метода frmReport. QuickRep1. Preview. Результат его выполнения приведен на рисунке 2.22.