Блоки. Создание реляционных отношений. Использование свойств ORDER BY и WHERE Clause
Цель лекции: научить слушателя создавать блоки данных и реляционные отношения между ними. Ознакомить слушателя с одними из самых главных свойств блока – ORDER BY и WHERE Clause.
Создание Мастер-Деталь блоков
Часто в приложениях необходимо отобразить одну или более записей из одной таблицы, ассоциированных с записями из другой таблицы по какому-либо признаку. В Oracle Forms существует несколько способов реализации отношения Мастер-Деталь между блоками формы. Один из самых быстрых и эффективных способов создания отношения между новыми или существующими блоками – использование Data Block Wizard, то есть мастера создания блоков, который позволяет быстро определить отношения между блоками. Data Block Wizard позволяет не только задавать новые отношения между блоками, но и автоматически создавать связь между блоками, если таковая определена на уровне базы данных. В этом разделе мы научимся создавать реляционные отношения между блоками и корректировать их.
Прежде чем приступить к выполнению конкретного примера, давайте ознакомимся с вариантами представлений отношений и степенью их вложенности.
"Мастер_1-Деталь_1" – это стандартная и наиболее часто используемая схема ( рис. 8.1), когда одной таблице Мастер соответствует много записей Деталь, то есть связь один ко многим.
"Мастер_1-Деталь_1 | Мастер_2-Деталь_1 " – эта схема ( рис. 8.2) показывает, что у одной таблицы может быть две мастер-таблицы. Такой способ построения отношений между блоками встречается крайне редко, так как неудобен.
"Мастер_1-Деталь_1(Мастер)-Деталь_2" – эта схема ( рис. 8.3) аналогична первой, с той лишь разницей, что блок Деталь_1 выступает как Мастер для блока Деталь_2, то есть является одновременно Мастером и Деталью.
"Мастер_1-Деталь_1 | Мастер_1-Деталь_2" – эта схема ( рис. 8.4) также аналогична первой, с той лишь разницей, что выступает Мастером для двух не связных между собой деталь-блоков.
Создание отношения Мастер-Деталь
Предварительная подготовка
Ниже приведены три таблицы с описанием структуры и скриптами для их создания.
Атрибут | Тип | Значение | Описание |
---|---|---|---|
Pr_key | NUMBER | Первичный ключ | |
Nlet | VARCHAR2 | 20 | Номер письма |
Pdat | DATE | YY.MM.DD | Дата письма |
Nfirm | VARCHAR2 | 100 | Наименование фирмы |
Tplus | NUMBER | Толеранс плюс | |
Tmin | NUMBER | Толеранс минус | |
Yslp | VARCHAR2 | 300 | Условия поставки |
Srpost | VARCHAR2 | 300 | Срок поставки |
sdat | DATE | YY.MM.DD | Дата загрузки письма |
Атрибут | Тип | Значение | Описание |
---|---|---|---|
Pr_key | NUMBER | Первичный ключ | |
Fk_pzak | NUMBER | Внешний ключ на таблицу PZAK | |
Smarka | VARCHAR2 | 100 | Марка стали |
Dopls | VARCHAR2 | 300 | Дополнительные условия |
Doptr | VARCHAR2 | 300 | Дополнительные требования |
Tmin | NUMBER | Толеранс минус | |
Tplus | NUMBER | Толеранс плюс | |
Part | NUMBER | Партия | |
Stand | VARCHAR2 | 100 | Стандарт на марку стали |
Атрибут | Тип | Значение | Описание |
---|---|---|---|
Pr_key | NUMBER | Первичный ключ | |
Fk_ppzak | NUMBER | Внешний ключ на таблицу PPZAK | |
Tls | NUMBER | Толщина листа | |
Shr | NUMBER | Ширина листа | |
Dln | NUMBER | Длина листа | |
Ton | NUMBER | Тоннаж | |
Gost | VARCHAR2 | 100 | Стандарт на толщину |
Num | NUMBER | Номер позиции заказа |
Скрипты для создания таблицы
- Описание письма и заказчика:
Create table PZAK ( pr_key number PRIMARY KEY, nlet varchar2(20), pdat date, nfirm varchar2(100), tplus number, tmin number, yslp varchar2(300), srpost varchar2(100), rnum number, sdat date )
- Описание товара:
Create table PPZAK ( Pr_key number PRIMARY KEY, Fk_pzak number, Smarka varchar2 (100), Priem varchar2 (100), Dopls varchar2 (300), Doptr varchar2 (300), Part number, Stand varchar2 (100), )
- Характеристика товара:
Create table PZAK_ATR ( Pr_key number PRIMARY KEY, Fk_ppzak number, tls number, shr number, dln number, ton number, gost varchar2 (100), )
После того как таблицы созданы, можно перейти к выполнению примера.
Пример, над которым мы сейчас начнем работать, будет использоваться на протяжении всего материала. Наша задача – получить приложение, задействующее основные возможности Oracle Forms. Мы будем создавать программу приема и обработки заказов.
- Создайте новую форму и сохраните ее под именем Zak.fmb.
- Вызовите мастер блока данных и выберите тип создаваемого блока данных – таблица или представление. Нажмите кнопку "Далее".
- Нажмите кнопку "Обзор" и в появившемся окне ( рис. 8.5) выберите таблицу PZAK и подтвердите выбор.
- Перенесите все "доступные столбцы" из левого списка в список "базовых элементов" ( рис. 8.6) и нажмите кнопку "Далее" для вызова мастера макетов.
- В появившемся окне ( рис. 8.7) "Мастер макетов" выберите канву, на которой будут расположены элементы блока данных. Тип канвы выберите "Основная". Нажмите кнопку "Далее".
- Из списка имеющихся элементов выберите все кроме PR_KEY. После того как вы перенесете все элементы в список "Выводимые элементы", выберите тип элемента ( рис. 8.8), соответствующий типу, который указан в таблице PZAK. Нажмите кнопку "Далее".
- В этом окне ( рис. 8.9) вам предлагается подписать и установить значение ширины и высоты элемента. Вы можете пропустить этот этап и установить эти характеристики позже. Нажмите кнопку "Далее".
- В этом окне ( рис. 8.10) вам предлагается выбрать стиль размещения и отображения элементов. По умолчанию предлагается стиль "Форма", который нам как раз и необходим. Для завершения работы с мастером макетов нажмите кнопку "Далее".
В нашем примере мы реализуем схему "Мастер_1-Деталь_1(Мастер)-Деталь_2", как показано на ( рис. 8.10). Для создания такой схемы требуется как минимум три блока, поэтому нам нужно создать еще два блока. У нас эта схема будет иметь вид:
PZAK-PPZAK-PZAK_ATR