Порядок выполнения работы

 

В SQL Plus или iSQL Plus создайте таблицу S_ORG:

 

CREATE TABLE s_org (kod                     NUMBER(7,0) NOT NULL, naimen                VARCHAR2(50), inn                       VARCHAR2(10)) /   ALTER TABLE s_org ADD CONSTRAINT pk_s_org PRIMARY KEY (kod) USING INDEX /

 

Запустите Forms Builder (В меню Пуск à [ Все ] Программы à Oracle Developer Suite – [ OraDS Home _ nameForms Developer à Forms Builder).

Теперь мы создадим простую форму на основе таблицы S_ORG (Справочник организаций). Для создания и редактирования форм используется Object Navigator (рис. 30). Object Navigator в удобной древовидной структуре отображает создаваемые нами объекты. Для создания формы для нашего справочника нам потребуется создать в первую очередь объект Data Block (Блок данных).

 

Рисунок 30 - Окно Object Navigator

 

Выделите узел MODULE1. На панели инструментов нажмите на значок  (Data Block Wizard). Если Вы увидите окно приветствия с текстом Welcome to the Data Block wizard – нажмите «Далее».

Нажмите «Далее» (рис. 31), так как наш Data Block будет базироваться на таблице.

 

 

Рисунок 31 - Окно мастера построения Data Block

 

Нажмите кнопку Browse (рис. 32). Так как мы не производили еще подключение к БД – появится окно Connect (рис. 33).

 

 

Рисунок 32 - Выбор таблицы или представления в Data Block Wizard

 

 

Рисунок 33 - Подключение к БД

 

Введите имя пользователя, пароль и базу данных, к которой производится подключение. Имя, пароль и имя базы данных Вам уже известны (например, User04XXX, XXXXX, ORCL). Нажмите «Connect»

В появившемся окне выберете наш справочник организаций (S_ORG) и нажмите «OK». В списке Available columns Вы увидите 3 узла – это атрибуты нашей таблицы. Нажмите кнопку «>>» для того, чтобы все колонки (они же атрибуты) использовались в нашем блоке данных. Теперь в списке Database Items Вы увидите 3 элемента (рис. 34). Нажмите «Далее».

Оставим имя блока данных таким же, как имя таблицы (рис. 35). Нажмите «Далее». Нажмите «Готово» (рис. 36), для того, чтобы создать картинку (вызвав Layout Wizard), основанную на только что созданном блоке данных. Вы увидите окно приветствия с текстом Welcome to the Layout wizard – нажмите «Далее».

Нажмите «Далее», для того чтобы создать новую картинку (рис. 37). В списке Available Items вы увидите элементы, которые могут быть использоваться на картинке. Нажмите кнопку «>>» для того, чтобы все элементы отобразить на картинке и нажмите «Далее» (рис. 38).

Теперь можно изменить надписи для выбранных элементов, изменить их ширину и высоту. Сделайте это как на рисунке 39 и нажмите «Далее».

В появившемся окне мы выбираем, как будут отображаться наши записи на картинке. В виде формы (Form), что удобно для вывода одной записи, либо в табличном виде (Tabular). Выберите второй вариант (Tabular) и нажмите «Далее» (рис. 40).

 

 

Рисунок 34 - Выбор атрибутов таблицы S_ORG

 

Рисунок 35 - Присвоение имени блоку данных

 

 

Рисунок 36 - Запуск мастера создания формы

 

Рисунок 37 - Создания нового объекта Canvas

 

 

Рисунок 38 - Выбор столбцов для отображения в объекте Canvas

 

Рисунок 39 - Создание надписей для элементов таблицы

 

 

Рисунок 40 - Выбор типа отображения данных

Теперь нужно ввести имя рамки (Frame Title), количество отображаемых записей на картинке одновременно (Records Displayed), расстояние между записями (Distance Between Records) и показывать ли ползунок (Display scrollbar). Сделайте это также как на рисунке 41 и нажмите «Далее» и затем «Готово».

 

 

Рисунок 41 - Форматирование вида отображения объекта Canvas

 

После того, как Вы нажали «Готово», в Object Navigar ’e в узле Data Blocks Вы увидите созданный нами блок данных «S_ORG», а в узле Canvases – картинку Canvas и рамку принадлежащей картинке Frame.

Для удобства использования созданной картинки и рамки, следует их переименовать. Для этого одинарным нажатием левой кнопки мыши нужно кликнуть на надпись Frame и затем набрать S_ORG, тоже самое проделайте для картинки (Canvas) (рис. 42).

 

 

Рисунок 42 - Переименование объектов Canvas и Frame

 

Можно посмотреть, что у нас получилось на этом этапе. Для запуска форм используется кнопка . Вы её можете найти на панели инструментов. Следует помнить, что запустится форма, на которой сейчас стоит фокус в Object Navigator ’е. Кроме того, форма может, не запустится – если у Вас не запущен OC4J (Oracle Container for Java) или не прописан путь к сервлету форм в настройках Forms Builder. Для того, чтобы запустить OC4J нужно в меню Пуск à Oracle Developer Suite à Forms Developer выбрать Start OC4J Instance. Для того чтобы использовать OC4J другого компьютера с уже запущенным OC4J или компьютера с установленным Oracle Application Forms and Reports Services нужно зайти         в меню Preferences Forms Builder’а, перейти на вкладку Runtime и в поле Application Server URL ввести URL, например, http://localhost:80/forms90/f90servlet.

Сохраните форму, нажав  на панели инструментов Forms Builder, под именем S_ORG.fmb. Сохранение следует произвести на данном этапе для того, чтобы запустить форму на исполнение; причем путь к форме не должен содержать пробелов, букв отличных от латинских. Узнайте у преподавателя, где Вам следует сохранить эту форму.

Запустите на исполнение форму, нажав кнопку . В случае запроса Do you want to log on before performing compilation – ответьте «Да». И введите данные Вашей учетной записи.

В окне браузера откроется форма (рис. 43).

 

 

Рисунок 43 - Запуск формы в браузере

ПРИМЕЧАНИЕ: Если вы используется в качестве браузера Internet Explorer – то возможна следующая ошибка: В окне браузера Вы увидите следющее: <html> <head> ORACLE FORMS.</head> <body onload=”document.pform.submit();” > <form name=”pform” action=”http://localhost:8889/forms90/f90servlet” method=”POST”> <input type=”hidden” name=”form”    value=”C:\temp\s_org.fmx”> <input type=”hidden” name=”userid”    value=”user/user@db”> <input type=”hidden” name=”obr”    value=”yes”> <input type=”hidden” name=”array”       value=”YES”>  </form> </body></html> В этом случае удалите выделенный символ «C:\Documents and Settings\USER\Local Settings\Temp\s2k8.2htm» в адресной строке браузера. Символ может быть другим, но разрешение в итоге должно быть htm. Нажмите Enter в адресной строке, после исправлений. Другой способ избежания этой ошибки, это смена браузера, например, на Mozilla Firefox. Для смены браузера, запустите Forms Builderи в меню Editвыберите пункт Preferences, перейдите на вкладку Runtime и в поле «Web Browser Location» введите путь к запускному файлу браузера или нажмите кнопку «Browse…» и выберите запускной файл браузера.

 

Вы можете ввести несколько организаций форму и сохранить записи, нажав на кнопку  на панели инструментов. В строке состояния Вы увидите сообщение, например, FRM-40400: Транзакция завершена: 3 записи переданы и зафиксированы. Нажмите  для того, чтобы закрыть форму.

Запустите форму еще раз, нажав . Не смотря на то, что Вы ввели несколько записей и сохранили их – Вы увидите, пустую форму, без данных. Можно проверить, действительно ли нет этих данных в таблице. Запустите iSqlPlus и введите:

 

SELECT * FROM S_ORG;

 

Вы сможете убедиться, что данные внесены в таблицу.

Для того чтобы эти данные отобразились при загрузке формы нужно использовать триггер WHEN-NEW-FORM-INSTANCE.

Триггер – это обработчик определенного события, возникающего на уровне модулей, блоков данных, элементов блоков данных, таблиц, схемы или базы данных в целом.

Триггеры – это непосредственно куски программного кода, который вы пишите для реализации функциональности вашего приложения. Каждый триггер имеет имя и содержит один или более PL/SQL операторов. Триггер на уровне среды разработки связывается с каким-нибудь событием и выполняется при возникновении этого события.

Имена триггеров соответствуют Runtime событиям, с которыми они связаны. Так, например триггер «When-Button-Pressed» соответствует событию нажатия кнопки «Button Pressed», в соответсвии с этим, когда пользователь нажимает данную кнопку, Oracle Forms вызывает данный триггер и выполняет его код.

Триггер должен быть связан непосредственно с каким-нибудь объектом, таким как форма, блок в форме или какой-либо элемент (текстовое поле, кнопка и т.д.) Например, в форме с тремя кнопками каждая из них имеет When-Button-Pressed триггер и каждый из этих триггеров содержит различный PL/SQL код. Пользователь нажимает какую-то кнопку и триггер, прикрепленный к этой кнопке (When-Button-Pressed) выполняется.

Для того чтобы добавить триггер нужно в Object navigator ’е выбрать узел Triggers. Вы можете заметить, что таких узлов в нашем модуле уже 2. Один узел находится на уровне модуля, а другой на уровне блока данных. Триггеры, которые можно добавлять в эти узлы так же могут различаться. Триггер WHEN-NEW-FORM-INSTANCE, который выполняется при загрузке формы, может быть добавлен только в узел Triggers на уровне модуля.

Выделите узел Triggers на уровне модуля и нажмите  на панели навигатора объектов. Выберите в появившемся окне (рис. 44) WHEN-NEW-FORM-INSTANCE и нажмите OK.

 

Рисунок 44 - Создание триггера

 

В навигаторе объектов появится созданный триггер, а также, на переднем плане, окно PL/SQL Editor (рис. 45). В этом окне на языке PL/SQL нам нужно написать код, который выполнит запрос, выводящий записи в нашей таблице.

 

 

Рисунок 45 - Ввод PL/SQL кода для триггера

 

Вставьте следующий код:

 

EXECUTE_QUERY;

 

Теперь запустите форму на исполнение . Как Вы заметили, теперь в нашей форме отображаются данные, введенные при первом запуске.

Создадим две кнопки, для того, чтобы можно было сохранять введенные значения и выходить из формы, не используя панель инструментов. Так как наша картинка является табличной – мы не можем добавить кнопку в неё (точнее добавив на картинку кнопку – мы увидим столько же кнопок, сколько отображается записей одновременно, в нашем случае 15).

Чтобы избежать этого, нам нужно создать новый блок данных, который не будет базироваться на таблице. Для этого в навигаторе объектов выберете узел Data blocks и нажмите .

В окне, отображенном на рисунке 46, следует выбрать второй пункт и нажать «OK».

 

 

Рисунок 46 - Выбор способа создания блока данных

В навигаторе объектов отобразится новый блок данных, с именем «BLOCK» -  переименуйте его в «S_ORG_TAIL».

Сделайте активным редактор картинки (рис. 47)

 

 

Рисунок 47 -. Создание кнопок в блоке S_ORG_TAIL

Выберете в списке Block только что созданный блок «S_ORG_TAIL». Нажмите на панели инструментов редактора картинки значок  и затем нажмите в области картинки в место, куда нужно вставить кнопку. Появится кнопка «PUSH_BUTTON», как на картинке, так и в навигаторе объектов. Переименуйте эту кнопку в «SAVE».

Теперь вернитесь в редактор картинки и, вызвав контекстное меню новой кнопки, выберете WHEN-BUTTON-PRESSED в списке SMART-TRIGGERS (рис. 48).

Введите следующий код в PL/SQL редакторе:

 

POST; --передать данные в БД

COMMIT_FORM; --зафиксировать изменения

 

Если Вы запустите форму на исполнение – появится ошибка, так как команда EXECUTE_QUERY попытается выполниться для блока, который не имеет записей «S_ORG_TAIL».

Для того чтобы исправить эту ошибку нужно вызвать Property Palette (Палитра свойств) нашего модуля, вызвав контекстное меню «MODULE», Вы увидите окно Property Palette (рис. 49). Здесь Вам нужно найти свойство First Navigation Data Block и выбрать из списка блок данных «S_ORG».

Теперь можно запустить форму на исполнение. Добавьте новую запись и нажмите нашу кнопку «SAVE». Форма скажет, что записи сохранены.

 

 

Рисунок 48 - Создание триггера для кнопки

 

 

Рисунок 49 - Установка первого навигационнго блока

 

Как Вы заметили, кнопка имеет название, по которому нельзя понять, что она выполнит сохранение. Теперь в навигаторе следует выбрать нашу кнопку «SAVE». Так как палитра свойств уже открыта, ее вызывать заново не нужно. Измените свойство «Label» - «PUSH_BUTTON» в палитре свойств на «Сохранить».

Создайте по вышеописанной схеме кнопку «Закрыть».  Нижеприведен PL/SQL код, которой будет выполняться по нажатию кнопки:

 

EXIT_FORM; --закрыть форму

 

На рисунке 50 представлен конечный вид формы.

 

Рисунок 50 - Запущенная форма «S_ORG» в браузере

 

Создадим ещё один триггер, – который будет закрывать форму по нажатию кнопки . Триггер создается на уровне модуля и называется WHEN-WINDOW-CLOSED и содержит код такой же, как и  у кнопки «Закрыть». Создайте этот триггер сами.

Когда какие-то разные события выполняют одинаковые или похожие действия имеет смысл создавать процедуры. Хоть в нашем случае это не совсем целесообразно, в учебных целях создадим такую процедуру для закрытия формы.

В Object Navigator ’е выберете узел Программы и нажмите . В окне «Нов.Программа» введите имя процедуры, например, «TO_EXIT» (рис. 51). Нажмите ОК.

 

 

Рисунок 51 - Создание процедуры TO_EXIT

 

В окне редактора PL/SQL введите следующий код:

 

PROCEDURE TO_EXIT IS BEGIN EXIT_FORM; --закрыть форму END;

 

Теперь нужно изменить триггеры WHEN-WINDOW-CLOSED и WHEN-BUTTON-PRESSED кнопки «Закрыть».

Для этого, вызвав контекстное меню этих триггеров, следует выбрать PL/SQL editor и заменить «EXIT_FORM» на имя нашей процедуры – «TO_EXIT».

Сохраните форму, нажав  на панели инструментов Forms Builder.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: