Смекни!
smekni.com

Проект автоматизированного рабочего места специалиста по формированию программ радиовещания (стр. 8 из 14)

Рисунок 2.8 - Схема структуры таблицы "Сотрудники радиостанции"

Схема структуры таблицы Obrabotka. db для сведений об обработке элементов вещания сотрудниками радиостанции приведена на рисунке 2.9.

Рисунок 2.6 - Схема структуры таблицы "Обработка элементов"

2.4 Решение типичных задач приложения по представлению и обработке данных из БД

2.4.1 Выполнение системных задач. Просмотр и редактирование данных

Рассмотрим содержимое основных пунктов меню главной формы приложения и действия, к которым приводит их выбор. Меню главной формы в различных режимах работы Дизайнера меню на этапе разработки приложения приведено на рисунке 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;

2.4.2 Запросы к таблицам БД АРМ Радио

Запрос при разработке приложения в 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 - Результат выдачи данных о суммарных объемах обработки сотрудниками элементов вещания, сгруппированных по форматам их хранения

2.4.3 Просмотр и печать результатов формирования отчета

Отчет с помощью компонентов Delphi закладки QReport организуется на отдельной форме, которая пользователю в процессе работы не предъявляется [15]. Внешний вид формы на этапе проектирования приведен на рисунке 2.21.


Рисунок 2.21 - Формы отчета на этапе проектирования

Просмотр и, по желанию пользователя, печать отчета осуществляется с помощью вызова метода frmReport. QuickRep1. Preview. Результат его выполнения приведен на рисунке 2.22.