Лабораторная
 

Лабораторная работа №6

по курсу СУБД ORACLE

Введение

В лабораторной работе рассматривается процесс построения простого клиентского приложения с использованием среды разработки Oracle Forms Developer 6i (в частности программы Oracle Forms Builder).

Справочные материалы

Для самостоятельного изучения и подготовки к лабораторной работе рекомендуются следующие справочные материалы (на англ. языке):

§  Guide60.pdf Oracle Forms Developer and Oracle Reports Developer

§  fb1ref60.pdf Form Builder Reference, Volume 1

§  fb2ref60.pdf Form Builder Reference, Volume 2

Задание

1.      Для базы данных со схемой, созданной в лабораторной работе №5, создать следующие экранные формы:

a)      для табличного ввода данных

b)      для ввода данных в виде “формы”

2.      Для двух полей формы 1.b задать маску формата вводимых значений

3.      Для какого либо поля формы 1.b связанного с другой таблицей создать список для выбора значений и обеспечить его вызов/отчистку по кнопке

4.      Создать подчиненный блок данных и разместить его на той или иной форме, обеспечить функции редактирования значений в подчиненной таблице.

5.      Создать простое меню для вызова одной экранной формы из другой

Работа с Oracle Forms Developer

Компоненты среды разработки

В состав среды Oracle Forms Developer входят следующие компоненты:

§  Forms Builder — средство разработки приложений на основе экранных форм

§  Graphics Builder — средство для создания диаграмм на основе данных получаемых из СУБД

§  Procedure Builder — редактор программного кода на языке PL/SQL

§  Schema Builder — средство для создания диаграмм и схем баз данных

§  Query Builder — интерактивное средство создания запросов к базе данных

§  Translation Builder — средство локализации (перевода на другие языки) приложений созданных в Oracle Forms Developer

§  Project Builder — средство управления проектом Forms Developer (позволяет вести разработку приложений включающих формы, диаграммы, запросы и т.д. и состоящих из большого числа составных частей, модулей, и т.п.)

Основные “Быстрые” клавиши:

F2 — Layout Editor (Редактор разметки формы)

F3 — Object Navigator (Навигатор Объектов), в котором отражена структура элементов создаваемого приложения

F4 — Property Palette (Палитра Свойств), окно со списком свойств редактируемого объекта формы

Ctrl-R — Запуск созданного приложения

Файлы создаваемые Forms Builder

В ходе работы Forms Builder создает (может создавать) файлы следующих типов:

*.FMB —Файл формы построенного в Forms Builder

*.FMX — Файл формы сгенерированной для выполнения

*.PLL — Файл пользовательской библиотеки

*.PLX — Файл сгенерированной пользовательской библиотеки

*.MMB — Файл пользовательского меню построенного в Forms Builder

*.MMX — Файл меню сгенерированного для выполнения

Построение приложения в Forms Builder

Приложение Forms Builder состоит из Форм — расположенных на экране элементов пользовательского интерфейса, каждый из которых выполняют определенные функции для той задачи, под которую спроектирована форма.

Форма может реагировать на различные события от внешней среды — запуск и завершение формы, нажатия клавиш на клавиатуре и т.п. Для перехвата и обработки этих событий разработчик приложения может создавать специальные подпрограммы на языке PL/SQL — триггеры. Подпрограммы на языке PL/SQL можно объединять в библиотеки функций, и тем самым исключить избыточность программного кода — например, если одни и те же действия выполняются при реакции на разные события от формы.

Форма связана с данным в базе данных Oracle посредством базовых блоков (datablocks), которые обеспечивают функции редактирования, добавления и удаления записей в таблицах базы данных. Каждый такой блок связан с одной таблицей (представлением). Форма может реагировать на события от блока данных, например на выполнение запроса, добавление, удаление, корректировку данных в блоке и т.п.

Для оформления графического представления того или иного окна создаваемого приложения Блоки размещаются на канвах (или холстах, canvas), там же располагают статические надписи, рисунки, графику, кнопки и т.п.

Конечным этапом проектирования приложения в Forms Builder является создание файлов определения форм и меню (файлов .FMX и .MMX), сами эти файлы не являются программами для той или иной операционной системы — они выполняются с помощью специальной среды Forms Runtime, которая фактически загружает определения форм и меню и обеспечивает их выполнение в среде операционной системы (Windows GUI или Unix Motif).

Пример

В примере описаны типовые последовательности действий для создания экранных форм простого приложения Forms Builder (в соответствии с моделью данных рассмотренной в лабораторной работе №5). Приложение будет содержать ряд простых форм для ввода данных о книгах, читателях, библиотеках и взаимосвязей между ними.

Создавать экранные формы в Forms Builder можно либо вручную, либо с помощью Мастеров. Мастер это последовательность вопросов, которые, Forms Builder задает разработчику, и по полученным ответам генерирует форму.

Запуск Forms Builder и создание формы для занесения информации о книгах

Запустите Forms Builder, в появившемся окне оставить установки по умолчанию: Use DataBlock Wizard (Использовать мастер блока данных) и нажать Ok:

В следующем окне Мастера Блока Данных оставить выбранным вариант Table Or View (Таблица или представление) и нажать Next (Далее):

В следующем окне Мастера нажать кнопку Browse (Обзор), произвести соединение с сервером и выбрать таблицу BOOK:

Перенести все столбцы из поля AvailableColumns(Доступные столбцы) в поле DatabaseItems (Базовые элементы), нажать Next (Далее):

В следующем окне Мастера оставить установки по умолчанию Create the data block, then call the Layout Wizard (Создайте блок данных и вызовите язык разметки), нажать Finish (Готово):

На этом работа Мастера Блока Данных завершается и будет автоматически запущен Layout Wizard (Мастер Разметки).

В окне Мастера Разметки установить следующие параметры: поле Canvas (Картинка) выбрать New Canvas (Новая канва), в поле Type (Тип) — Content (Основная). Нажать Next (Далее):

В следующем окне Мастера перенести все столбцы из поля Available Items (Имеющиеся элементы) в поле Displayed Items (Выводимые элементы), нажать Next (Далее):

В следующем окне Мастера перенести задать названия столбцам таблицы (имена которые будет отображены в интерфейсе пользователя создаваемого приложения):

В следующем окне Мастера выбрать стиль разметки для будущей экранной формы — Table (Таблица), нажать Next (Далее):

В следующем окне Мастера задать заголовок формы “Список книг”, указать число выводимых записей: 20, поставить отметку Display Scroll Bar (“Выводить линейку прокрутки”), нажать Next (Далее) и Finish (Готово):

В результате работы Мастеров будет создана экранная форма для ввода и редактирования данных о книгах в табличном представлении. По завершении работы Мастеров форма будет открыта в режиме редактирования (Layout Editor):

В режиме редактирования формы можно перемещать расположенные на ней элементы, изменять их размеры, добавлять и удалять их, изменять свойства элементов и самой формы. Для редактирования свойств элемента нужно вызвать Property Palette (F4):

Следует отметить, что тонкая черная рамка вокруг серого поля, имеющая в Навигаторе Объектов, на котором располагаются объекты — это видимая область будущей экранной формы (окно), а серое поле — это сама канва (область, в пределах которой располагаются объекты).

Далее следует Сохранить сделанные изменения (меню File\Save, или же щелкнуть мышью по пиктограмме с изображением дискеты в окне Навигатора объектов). В качестве имени файла, в котором будет сохранен модуль формы, например, BOOK.

Для проверки того, что все сделано правильно, запустите созданную форму на выполнение — меню Program\RunForm\ClientServer, комбинация клавиш Ctrl-R или же щелкнуть мышью по пиктограмме с изображением светофора в окне Навигатора объектов:

Будет запущена среда выполнения приложений Oracle Forms и открыта только что созданная экранная форма. Введите в поля формы какие либо данные и выберете пункт меню Action\Save — введенные данные будут записаны в таблицу BOOK. Закройте среду выполнения. Снова запустите экранную форму, но на этот раз выберите пункт меню Query\Execute — в экранную форму будут загружены данные из таблицы BOOK, введенные при предыдущем запуске формы.

Форма для занесения информации о библиотеках

Создать новый модуль: выбрать в Навигаторе Объектов пункт дерева Forms (Формы), выбрать пункт меню Navigator\Create (Создать) или же щелкнуть мышью по пиктограмме с изображением зелёного плюса.

Выбрав в дереве Навигатора Объектов созданный модуль, вызвать пункт меню Tools \ Datablock Wizard (Инструменты \ Мастер блока данных).

Далее используя Мастер Блока Данных и Мастер Разметки создать аналогичную форму для работы с таблицей LIBRARY. При этом Мастере Разметки выбрать вариант разметки Form (Форма), а не Table (Таблица), количество выводимых записей оставить равным 1 и не выводить полосу прокрутки (т.е. оставить значения в двух последних окнах Мастера Разметки по умолчанию):

Для поля Phone (Телефон) в Палитре Свойств определить значение маски формата: 999"-"9999. С помощью такой маски формата приложение будет требовать от пользователя вводить номера телефонов в виде 7-ми цифр разделенных одним коротким тире (например: 105-5555):

Форма для занесения информации о людях (читателях и работниках библиотек)

Аналогичным образом создается новый модуль формы PERSON и используя Мастеров создать форму на основе таблицы PERSON:

Для поля Phone определить значение маски формата: 999"-"9999. Для поля DateOfBirst определить значение маски формата: DD.MM.YYYY

Поле Photo позволяет сохранить в базе данных фотографию человека (графическое изображение). Для того, чтобы при работе с формой вставить изображение в это поле можно, в частности, воспользоваться стандартными операциями копирования и вставки (открыть рисунок в каком либо графическом редакторе, скопировать в буфер обмена, в созданной форме переместить курсор в поле элемента Photo и выбрать пункт меню Edit\Paste либо нажать комбинацию клавиш Ctrl-V).

Поле LibNumber указывает номер библиотеки, в которой работает человек или же содержит NULL значение, если он не работает ни в одной из библиотек. Поэтому необходимо организовать подстановку номеров библиотек из таблицы LIBRARY в это поле.

Для этого следует воспользоваться специальным мастером списка значений (List Of Values): выберите поле LibNumber в редакторе формы и вызовите пункт меню Tools\LOV Wizard (Мастер LOV). Оставить значение по умолчанию New Record Group based on a query (Новую группу на основе запроса), нажать Next (Далее).

В поле SQL запроса ввести текст запроса, возвращающего номера всех библиотек (можно также нажать кнопку Build SQL Query (Построить запрос SQL) и создать запрос с помощью специального графического редактора):

SELECT ALL LIBRARY.LIBNUMBER, LIBRARY.ADDRESS

FROM LIBRARY

Нажать кнопку NEXT (Далее).

Перенести все пункты из поля Record Group Columns (Столбцы группы записей) в поле LOV Columns (Столбцы LOV), нажать Next (Далее).

В следующем окне Мастера ввести заголовки полей, которые будут отображаться в списке значений, выбрать столбец Library и нажать кнопку Look up return item (Возвр. элемент для просмотра) для выбора элемента который для подстановки: в появившемся списке выбрать PERSON.LIBNUMBER. Нажать Next (Далее):

В следующем окне Мастера ввести заголовок (например, “Номера библиотек”), нажать Next (Далее).

В следующем окне Мастера оставить все значения по умолчанию, нажать Next (Далее).

В следующем окне Мастера из списка Return Items (Возвр. Элементы) перенести единственный столбец PERSON.LIBNUMBER в Assigned Items (Элементы назнач.), нажать Finish (Готово):

Для того, чтобы в момент выполнения формы вызвать на экран список значений нужно установить курсор на поле формы (в данном случае поле LibNumber) и выбрать пункт меню Edit \ Display List (Редактир\Вывести список). Так же можно создать на форме две кнопки — List и Clear для вызова списка значений и отчистки поля LibNumber соотвественно. Для этого создайте две кнопки (инструмент “Button” находится в левой панели инструментов окна редактирования формы) рядом с полем LibNumber, щелкните правой кнопкой мыши на созданной кнопке и выберите SmartTriggers\WHEN-BUTTON-PRESSED для создания подпрограммы на языке PL/SQL которая будет выполнена при нажатии на кнопку. Введите следующий код подпрограммы:

DECLARE

RESULT BOOLEAN;

BEGIN

-- показать список значений с именем LOV_LIBNUMBER

RESULT := Show_lov('LOV_LIBNUMBER');

END;

Для кнопки Clear введите следующий код подпрограммы:

BEGIN

-- установить NULL значение для поля LIBNUMBER

:LIBNUMBER := NULL;

END;

Запустите программу (форму) на выполнение и проверьте работоспособность созданных кнопок.

Форма для определения связей между Библиотекой и Книгами

Для того чтобы на форме с описанием библиотеки отобразить список книг, хранящихся в ней можно создать подчиненные блок данных — откройте редактор формы LIBRARY (форма создана ранее), выберите узел DataBlocks в Навигаторе Объектов и добавьте новый блок данных (щелкните по пиктограмме с изображением зеленого плюса). Блок данных постройте на основе таблицы STOREDINLIBRARY, при этом следует определить отношение создаваемого блока и блока LIBRARY, для этого нажмите на кнопку CreateRelationship в мастере.

Выберите вариант Based on join condition:

В полях Detail Item и Master Item выберите LIBNUMBER, созданное таким образом условие будет ограничивать набор показываемых на форме книг — будут показаны только ISBN тех книг, которые имеются в библиотеке с номером LIBNUMBER:

В следующих окнах мастера выберите вариант формы Таблица, и в список отображаемых столбцов включите только столбец ISBN:

В результате на форму будет помещен подчиненный блок полей для редактирования номеров ISBN книг, находящихся в библиотеке:

Создание меню программы

В Forms Builder с каждой формой можно связать специально созданное меню. Для того, объединить созданные формы в единое приложение можно создать меню, через которое пользователь сможет вызывать ту или иную форму по своему желанию.

Чтобы создать меню выберите пункт меню File\New\Menu. Затем вызовете окно редактора меню через команду Tools\Menu Editor. Переименуйте меню в LIBRARY_MENU и добавьте в него три пункта для вызова созданных форм:

Выбирая по очереди каждый из пунктов меню, установите в палитре свойств значение свойства CommandType в PL/SQL — это означает, что при выборе этого пункта меню будет выполнена подпрограмма на языке PL/SQL. Для редактирования этой подпрограммы в палитре свойств выберите пункт MenuItemCode и нажмите кнопку More в этой строке:

В качестве подпрограммы на языке PL/SQL введите:

call_form('PERSON');

Эта команда вызовет форму с именем ‘PERSON’.

Для остальных пунктов меню задайте команды вызова соответствующих форм.

Чтобы использовать созданное меню в формах, меню необходимо предварительно скомпилировать (преобразовать к виду, пригодному для выполнения) — выберете модуль созданного меню в дереве Навигатора Объектов и затем выбрать команду File\Administration\CompileFile. При этом Forms Builder преобразует файл определения меню .MMB в скомпилированный файл .MMX.

Выберите какую либо форму (например LIBRARY) и в палитре свойств формы укажите какое меню использовать для этой формы. Установите значение поля MenuSource в File (использовать меню определенное во внешнем .MMX файле), в поле MenuModule укажите имя файла меню (без расширения .MMX), а в поле InitialMenu — имя одного из меню, определенных в .MMX файле, которое будет отображено на форме:

Запустите форму на выполнение, если всё выполнено правильно, то форма будет содержать созданное меню. Выбор того или иного пункта меню будет запускать соответствующую форму.