Опубликован: 17.09.2009 | Уровень: специалист | Доступ: свободно
Лекция 7:

Блоки. Виды и структура блоков. Управление свойствами блока

< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Аннотация: В этой лекции слушатель ознакомится с различными видами блоков и их структурой, а также научится управлять свойствами блоков программно и на этапе проектирования.

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

Блоки

В Oracle Forms существует свой формат представления источника данных – блок данных. Блок данных в Oracle Forms может иметь различные источники данных:

  • таблица;
  • представление;
  • синоним;
  • внутреннее представление (from clause);
  • транзакционные триггеры.

Несмотря на различные источники данных, структура блока остается неизменной.

Блок (Block) – это логическая структура, которая не является физической копией каких-либо данных, она создает логический структурированный образ на основе выбранной модели данных (таблица, представление, синоним). Другими словами, блок – это упорядоченная, организованная единица представления данных на основе указанного источника данных. При создании блока вам не нужно повторно определять взаимосвязи между таблицами, создавать ограничения целостности, потому что Oracle Forms автоматически определяет наличие взаимосвязей и ограничений. Блоки, как и объекты БД, могут содержать взаимосвязанные элементы, которые выводят записи данных. Поскольку блоки являются лишь логическими единицами, ограничений на их количество нет. Блоки, как и другие объекты, могут создаваться, копироваться, изменяться и имеют свои свойства.

Типы блоков

В зависимости от потребностей пользователя в Oracle Forms предусмотрено два типа блоков.

Базовый блок – это блок, созданный на основе определенной таблицы или представлении базы данных. В таком блоке элементы (один или более) прямо связаны со столбцами базовой таблицы, так как элементы содержат значения столбцов выбранной вами таблицы или представлении.

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

Блоки с базовой таблицей автоматически включают в себя функции поддержки запросов, DML операций (обновление, вставка, удаление) с таблицей, с которой этот блок связан, а также встроенные подпрограммы для выполнения этих операций.

Если вы создаете базовой блок с включенной опцией Integrity Constrains, это говорит Oracle Forms о том, что при создании блока нужно автоматически изменять некоторые его свойства, а также сгенерировать триггеры и программные модули (Program units):

  • если элемент связан с колонкой первичного ключа в базовой таблице, то автоматически для элемента устанавливается свойство Primary Key ("первичный ключ") на True и свойство Update Allowed ("разрешено обновление") на False, а для блока свойство Primary Key устанавливается на On ;
  • для придания силы уникальным значениям в элементах, связанных с колонками первичных ключей, и для включения ограничений CHECK создает триггер When_Validate_Item или When_Validate_Record. При наличии составного первичного ключа создается триггер When_Validate_Record, иначе – When_Validate_Item ;
  • Oracle Forms создает для блока триггер When_Remove_Record, если его базовая таблица в базе данных создана как имеющая отношение "первичный-внешний ключ" с другой таблицей. Этот триггер предохраняет запись от удаления, если имеются соответствующие подчиненные записи в таблице внешнего ключа.

Позже, говоря о модели главный-подчиненный (master-detail), мы с вами рассмотрим, какие триггеры Oracle Forms автоматически генерирует при создании блоков с зависимостью главный-подчиненный.

Создание блока

В Oracle Forms вы можете создать блок двумя способами:

  • мастер блоков данных;
  • команда create навигатора объектов.

Рассмотрим первый случай – создание блока с применением мастера блоков данных. Использование мастера позволяет вам быстро создавать блоки данных на основе выбранной вами модели данных: синоним, обзор, таблица и хранимые процедуры.

Рассмотрим создание блока пошагово, но для начала создадим модель данных, на основе которой будем создавать блок. В листинге приведен скрипт для создания таблицы, который вы можете выполнить в SQL*Plus или в любой другой утилите, предназначенной для работы с БД Oracle.

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
)
  1. Вызовите мастер блоков данных командой меню Tools | Data Block Wizard ( рис. 7.1). Сразу после выполнения команды на экране появится приглашение Data Block Wizard. Вы можете отключить появление этого приглашения, сняв флажок "Display this page next time". Вы также можете запустить окно "Preferences" (Edit | Preference), в котором можете управлять отображением приглашений, изменяя состояние переключателей вкладки Wizard.
    Приглашение Data Block Wizard

    Рис. 7.1. Приглашение Data Block Wizard
  2. Нажмите кнопку "Далее" для перехода к следующему этапу. Следующий этап – это выбор модели данных для создания блока данных. Вы можете выбрать между хранимой процедурой и таблицей ( рис. 7.2).
    Диалог выбора модели данных

    Рис. 7.2. Диалог выбора модели данных
  3. Нажмите кнопку "Далее" для продолжения. Следующий этап – это выбор таблицы, синонима или представления как источника данных для блока ( рис. 7.3).
    Диалог создания структуры блока данных

    Рис. 7.3. Диалог создания структуры блока данных
  4. Чтобы выбрать источник данных, нажмите кнопку "Browse", после чего на экране появится окно Tables ( рис. 7.4).
    Окно "Tables"

    Рис. 7.4. Окно "Tables"
    Вы можете управлять отображением таблиц, изменяя состояние флажков.
    • Current user – если опция включена, то в списке "Table" появляются все таблицы, принадлежащие текущему пользователю (схеме).
    • Other users – если опция включена, то в списке "Table" появляются все таблицы других пользователей. Если опция отключена, то отображаются таблицы текущего пользователя.
    • Tables – если опция включена, то в списке "Table" отображаются все объекты БД, имеющие тип "Таблица".
    • Views – если опция включена, то в списке "Table" отображаются все объекты БД, имеющие тип "Обзор".
    • Synonyms – если опция включена, то в списке "Table" отображаются все объекты БД, имеющие тип "Синоним".
  5. Выберите созданную нами ранее таблицу PZAK и нажмите кнопку "OK" для подтверждения выбора. После того как источник данных выбран, в окне "Available Columns" появится весь перечень столбцов таблицы ( рис. 7.5).
    Выбор элементов блока данных

    Рис. 7.5. Выбор элементов блока данных
  6. Перейдем к завершающему этапу – выбору столбцов блока данных. Выбор элементов блока данных осуществляется с помощью управляющих кнопок с изображением стрелок, где одинарные стрелки означают перемещение одного элемента, а двойные стрелки – перемещение всего набора столбцов. Для создания блока данных нужно, чтобы в списке "Database Items" присутствовал хотя бы один элемент.
  7. Блок данных готов, и вы можете нажать кнопку "Готово" для завершения работы мастера, после чего в навигаторе объектов появится блок данных с именем PZAK. Если вы не завершите работу мастера и нажмете кнопку "Далее", то вам будет предложено ввести имя блока. По умолчанию имя блока идентично имени таблицы, с которой он ассоциирован.
  8. Нажмите кнопку "Далее" для продолжения ( рис. 7.6). В следующем окне разработчику будет предложено разметить блок данных, создать для него холст и упорядочить элементы с помощью мастера разметки блока данных. Выберите опцию "Just create the Data Block " для завершения работы мастера блоков данных ( рис. 7.7). Вы можете продолжить работу над блоком, вызвав мастер разметки блока данных.
    Ввод имени блока данных

    Рис. 7.6. Ввод имени блока данных
    Завершение работы мастера блоков данных

    Рис. 7.7. Завершение работы мастера блоков данных
  9. Нажмите кнопку "Готово" для завершения работы с мастером. После этого диалог мастера исчезнет с экрана и в навигаторе объектов появится созданный вами блок данных со всеми элементами ( рис. 7.8).
    Блок данных в навигаторе объектов

    Рис. 7.8. Блок данных в навигаторе объектов
< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Жанбек Сарсенов
Жанбек Сарсенов
Россия, Москва, Московский Государственный Университет имени Ломоносова М.В., 2002