RvProject2.Execute; finally
RvProject2.Close;
end;//try
11. Запустите приложение, проверьте работу.
Задание 3. Создание отчета по двум таблицам. Создадим отчет с группи- ровкой, в котором сначала будут выводиться данные автора книги из таб- лицы Authors, а затем список книг, которые написал этот автор.
В проекте на форму DM с вкладки Rave поместим 2 компонента
RvDataSetConnection, заменить их имена на RV_Authors и RV_Books. У
свойства DataSet установить ссылку по очереди на соответствующие ком-
поненты ADOAuthors и ADOBooks.
Продолжаем работу с визуальным конструктором отчетов Rave Reports 5.0. Создаем новый отчет, для этого:
С помощью команды Tools\Rave Designer меню Delphi снова запустим визуальный конструктор Rave Reports 5.0.
Создаем новый отчет выбором команды File\New Report.
Выбором команды File\New Data Object откроем диалоговое окно Data Connections и выберем в нем вариант Direct Data View. В следующем окне выберем в качестве активных источников данных RV_Authors и RV_Books. В правом окне RaveProject будут добавлены разделы
DataView2 и DataView3.
Устанавливаем компонент Region с вкладки Report, который является контейнером для компонентов Band (Полоса), у которого установить сле- дующие свойства:
Height на 10,6; Width на 8,1.
Устанавливаем 2 компонента Band с вкладки Report в область Region. Помещаем в каждую добавленную полосу по компоненту Text с вкладки Standart. В первой полосе у компонента Text меняем следующие свойства:
Font на Courier, 15, Bold;
Text на Отчет с группировкой.
Во второй полосе у компонента Text меняем следующие свойства:
Font на Courier, 15, Bold;
Text на Ф.И.О. автора.
Устанавливаем 2 компонента DataBand с вкладки Report в область Region, у которых изменить свойство DataView на DataView2 и DataView3 соответственно. Помещаем в каждую добавленную полосу по компоненту DataText с вкладки Report. В первой полосе у компонента DataText меняем следующие свойства:
105
DataView на DataView2; DataField на name_author.
Ниже под компонентом DataText помещаем компонент Text, где меня-
ем надпись на «Названия книг данного автора».
Во второй полосе у компонента DataText меняем следующие свойства:
DataView на DataView3; DataField на Title_book.
Пример размещения компонент на форму представлен на рис. 9.4.
Рис. 9.4. Пример расположения компонентов отчета по двум таблицам
В отчете присутствуют два соответствующих представления данных, каждое из которых подключено к компоненту DataBand (оба компонента располагаются внутри региона).
Первый компонент DataBand1 ассоциирован с основным набором данных и не обладает какими-либо специальными настройками.
Второй компонент DataBand2 определяет отношения типа «основ- ное/подробности», используя несколько свойств. Свойство MasterDataView ссылается на представление данных основного набора данных DataView2, а свойства MasterKey и DetailKey ссылаются на поля, при помощи которых определяется объединение, в данном случае оба этих свойства ссылаются на поле Code_author. Свойство ControllerBand ссы- лается на компонент DataBand1, который отображает данные из основно- го набора данных. Кроме того, для отображения данных из подчиненной таблицы, в данном случае Books, нужно настроить свойство компонента DataBand2 – BandStyle, нажав рядом со свойством кнопку «…». В окне
Band Style Editor отметить свойство Detail(D).
Если вы не хотите, чтобы отображаемые подробности переходили на следующую страницу (в этом случае основные данные и часть подробно- стей будут располагаться на разных страницах), присвойте свойству
106
KeepRowTogether значение True.
Сохранить отчет с названием Report3.rav.
На главную форму MainForm клиентского приложения с вкладки Rave поместим компонент RvProject и установим значение Report3.RAV (спе- цификация созданного нами файла проекта) свойству ProjectFile этого компонента с помощью Инспектора объектов.
В главной форме приложения в подпункте Отчет с группировкой в методе Click вызываем метод Execute, обеспечивающий выполнение отче- та (в нашем примере Report3) из состава проекта отчета (компонента
RvProject3): dm.ADOAuthors.Open; dm.ADOBooks.Open; RvProject3.Open;
try RvProject3.Execute;
finally RvProject3.Close;
end;//try
Запустите приложение, проверьте работу.
Варианты заданий к лабораторной работе №9
По индивидуальной базе данных, которая выдана по вариантам (из ла- бораторной работы №1), сделать в клиентском приложении четыре отчета, которые будут запускаться через меню главной формы:
-отчет в табличной форме по одному из справочников, причем необхо- димо вывести итоговое количество записей в отчете;
-отчет в свободной форме. Выберите одну из таблиц, по которой можно сделать или бейдж, или ценник, или пригласительный билет. При созда- нии отчета используйте рисунок в качестве подложки;
-отчет по запросу. Соедините данные всех основных таблиц, кодовые по- ля в запрос не помещайте. Создайте отчет в табличной форме с итого- вым полем. Это может быть сумма или количество и т.п., в зависимости
от содержания запросов. Каждая строка в отчете должна иметь номер по порядку. Например (см. фрагмент ниже):
1) Крупа 10 кг
2)Мука 20 кг
ит.д.;
-отчет с группировкой по нескольким таблицам. Выберите одну пару связанных таблиц, определите главную и зависимую таблицы и сделайте отчет в табличной форме, в котором данные из главной таблицы рас- шифровываются (дополняются) данными из зависимой таблицы.
107
Лабораторная работа №10
ИЕРАРХИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ И УЧЕТ ВЕРСИОННОСТИ ПРИ РАБОТЕ C ДАННЫМИ И МОДЕЛЯМИ
Цель работы – научиться средствами реляционной объектно- ориентированной СУБД создавать базы моделей, а также хранить историю работы и версии текстов, программного кода и математических моделей в форме иерархических структур.
Содержание работы:
1.Познакомиться с примером представления иерархической структуры
вСУБД.
2.Познакомиться с понятием версионности и способом учета ее в БД.
3.Выполнение примера по ходу лабораторной работы.
4.Выполнение индивидуальных заданий.
Пояснения к выполнению работы
Задача организации хранения и обращения к версиям текстовых доку- ментов решается в современных системах документооборота, также как и задача многоступенчатого утверждения документов в электронном виде. При этом если обратить внимание на работу специалистов, занимающихся задачами моделирования сложных технических объектов (СТО) и динами- ческих систем, то можно увидеть, что их процесс работы также носит сту- пенчатый характер, нет последовательного развития модели, есть версии модели, которые либо последовательно накладываются одна на другую, либо происходит откат к одной из более ранних версий и ее дальнейшее развитие. В результате, если рассматривать процесс моделирования в со- временных системах, то мы приходим к необходимости хранения иерархи- чески связанных версий модели.
В работе [http://semenova-ii.narod.ru/model/MS_IT_Semenova.pdf] опи-
сан подход к формированию модели СТО, особенностью которого являет- ся возможность учета всех компонентов модели и их сочетаний (много- компонентность и многовариантность), показывающие полную картину режимов эксплуатации СТО (рис. 10.3).
Эту многовариантную и многокомпонентную структуру, удобно фор- мализовать посредством языка морфологических графов, аналогичных тем, что используются для автоматизации структурного синтеза систем. В дан- ном способе И-компонентом будет выступать варьируемый параметр, для которого обязательно нужно выбрать вариант уравнения, по которому, он будет определяться, а ИЛИ-компонентом будет уравнение или константа,
108
которые играют роль варианта для определяемого родительского парамет- ра. Любой возможный вариант сборки модели однозначно задаётся подде- ревом, включающим корневую вершину, всех её потомков (И–типа), и по- следующим присоединением к каждому И-потомку одного из его ИЛИ- потомков, и к каждому ИЛИ-потомку – всех его И-потомков. Выбор под- дерева продолжается до тех пор, пока все включённые в него потомки са- мого нижнего уровня не окажутся листьями, т. е. известными функциями времени или константами.
При подобной организации представления модели версия модели – это совокупность компонент модели в И-ИЛИ дереве, над которыми были вы- полнены операции модификации и/или добавления, и/или удаления по от- ношению к родительской версии, версия модели может быть создана на базе любой из уже существующих. Первая версия модели считается корне- вой. На рис. 10.1 представлен фрагмент базы данных, организующей хра- нение И-ИЛИ деревьев моделей и их версий.
Рис. 10.1. Фрагмент структуры базы данных, хранящей И-ИЛИ деревья моделей и их версии
Для создания проекта по работе с деревьями, информация о которых хранится в БД, представленной на рис. 10.1, в Oracle нужно создать пользователя с помощью следующего кода:
CREATE USER "ADMIN_TREE" PROFILE "DEFAULT" IDENTIFIED BY "worlds" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
109