Россия, Москва, Московский Государственный Университет имени Ломоносова М.В., 2002 |
Группы записей (Record Groups)
Цель лекции: научить слушателя создавать группы записей и ознакомить со стандартными встроенными подпрограммами, предназначенными для работы с Record Group.
Разобьем изучение этой главы на несколько частей, т. к. этот материал довольно объемный и требует внимательного изучения, поскольку используется более чем с одним объектом.
- Описание и свойства групп записей.
- Создание групп записей.
- Примеры использования.
Описание, назначения и свойства
Группы записей – это структурированные наборы данных, которые могут использоваться для передачи данных между модулями прикладных программ либо для заполнения списков значений или других элементов списка. Группа записей подобна как таблицам, так и представлениям базы данных. Как и таблица, группа записей содержит столбцы и строки, которые принадлежат той рабочей области, в которой определены. Так же, как и представление, группа записей создается на основе запроса, но является более гибкой, и не только по той причине, что группа записей для Oracle Forms локальна, но и потому что запрос, на основе которого создается группа записей, можно конструировать динамически, во время выполнения программы.
Группы записей можно разделить на два основных типа, которые вы можете определить в таблице свойств этого объекта:
- Запросные – это группа записей, имеющая связанный с ней оператор выборки – SELECT. При создании группы записей Forms дает столбцам этой группы имена по умолчанию; все остальные данные, такие как размерность столбца и тип данных, Forms наименует исходя из тех данных, которые вы указали в SELECT. Записи для такой группы извлекаются тем же запросом, что и при построении группы записей. Колонки запросной группы записей берут свои имена по умолчанию, типы данных и размерность – из колонок базы данных, на которые делаются ссылки в операторе SELECT.
- Статические – это группа записей, не связанная с запросом, поэтому структуру такой группы вы определяете во время проектирования, и, следовательно, во время выполнения формы ее значения остаются фиксированными, т. к. вы их задаете заранее при построении группы.
Основные функциональные свойства группы записей:
Тип запроса – здесь вы можете выбрать тип запроса "Статический" или "Запрос". Их различия описаны выше. В зависимости от выбранного типа группа записей принимает разные функциональные свойства.
Если выбран тип "Запрос":
- Запрос группы записей – в этом свойстве вы пишете запрос, которым будете выбирать записи в группу и создавать группу;
- Размер выборки группы записей – это число строк, выбираемое Запросом группы записей;
- С пецификация столбца – при выборе этого свойства запускается окно "STUDY: Спецификация столбца", в котором вы можете указать имя столбца, длину и тип.
Если выбран тип "Статический":
- Спецификация столбца – при выборе этого свойства запускается точно такое же окно "STUDY: Спецификация столбца", как и в предыдущем случае, с той лишь разницей, что помимо полей, в которых вы можете указать имя столбца, длину и тип, вы также можете указать и значение столбцов (Column Values).
Применение групп записей
Группы записей являются неотъемлемой частью списков значений LOV, так как LOV связан с определенной группой записей. Когда в мастере создания LOV – LOV Wizard – вы выбираете столбцы из одной или более таблицы для их отображения в LOV, вы на самом деле создаете группу записей, которая после завершения работы мастера появится в соответствующем узле навигатора. Если же вы создаете LOV вручную, то вам придется самим создавать группу записей, а затем присоединять ее к LOV. Подсоединение группы запросов к LOV может осуществляться как статически, так и динамически, во время выполнения программы.
Помимо LOV группы записей использует объект TREE VIEW – в этом объекте группа записей является одним из двух вариантов заполнения этого элемента. Создав группу записей, вы можете ее присоединить к TREE VIEW через его палитру свойств. Однако запросная группа для этого элемента строится не через обычный запрос, а через иерархический запрос. Создание групп записей для этого объекта мы рассмотрим в разделе, посвященном объекту TREE VIEW.
С помощью специального набора процедур и функций для работы с группами записей можно не только менять структуру группы в ходе выполнения программы, но и переопределять группу записей как для LOV, так и для TREE VIEW. Для динамического подключения групп записей к LOV и TREE VIEW используются две процедуры:
- SET_LOV_PROPERTY – содержит аргумент для установки группы записей в LOV;
- SET_TREE_PROPERTY – содержит аргумент для установки группы записей в TREE VIEW.
Строки групп записей внутренне пронумерованы последовательно начиная с 1, то есть 1, 2, 3 и т. д., поэтому если вам будет необходимо обратиться к каким-либо определенным строкам, то достаточно указать номер этой строки.
Создание группы записей
Поскольку существует два типа запросных групп — статическая и запросная, этапы создания статической и запросной групп рассмотрим отдельно.
Для создания запросной группы выполните следующие шаги:
- Перейдите в навигатор и выберите узел " группы записей ". В меню навигатора выберите Navigator->Create.
- В появившемся окне New Record Group выберите тип запроса Based on the Query below.
- В поле Query Text введите ваш запрос. В запросе вы можете без проблем использовать как параметры формы, так и глобальные переменные. После окончания ввода запроса нажмите кнопку "ОК", причем ввод символа ";" в конце запроса необязателен. После этого Forms проверит ваш запрос на наличие ошибок и закроет окно, если таковые отсутствуют.
Созданная вами группа пока еще не имеет строк, поэтому для так называемого заполнения вам необходимо программно исполнить запрос с помощью процедуры POPULATE_GROUP1Если на запросной группе записей основывается LOV, то Oracle Forms исполняет запрос, связанный с этой группой записей, при каждом вызове LOV либо при проверке LOV Validation. . Исполняемый запрос, естественно, должен быть связан с запросной группой.
После создания Запросной группы записей перейдите в палитру свойств группы записей и выберите свойство "Спецификация столбца" (Column Specification). При выборе этого свойства запускается окно Query Record Group Column Specification, в котором вы увидите выбранные вами столбцы (Column Names), их тип (Data Type) и размер (Length).
При выборе определенной колонки отображаются соответствующие ей структуры (тип, размер). Если вы удалите какой-нибудь столбец из Column Names, ваш запрос абсолютно не пострадает, а вот изменение запроса, будь то удаление, добавление или изменение запрашиваемого столбца в запросе, приведет и к его изменению в Query Record Group Column Specification.
Примечание. При изменении группы запросов не забудьте сделать соответствующие преобразование в LOV, потому что в этом случае вам придется обновить определение этого LOV.
Для создания статической группы выполните следующие шаги:
- Перейдите в навигатор объектов и выберите узел " Группы записей ". В меню навигатора выберите Navigator->Create.
- В появившемся окне New Record Group выберите тип запроса Static Values и нажмите "ОК".
- В появившемся окне "Спецификация столбца" (Column Specification) для каждого столбца выполните следующее:
- в списке Column Name введите имена колонок для группы записей в нужном порядке;
- установите тип данных и длину каждой колонки, причем длины необходимо указывать только для данных типа VARCHAR и LONG, для всех остальных типов Oracle автоматически расставляет значения.
Введите значение для каждой ячейки в группе записей, выбирая нужную колонку в списке Column Name и затем вводя нужные значения в списке Column Value. Очень важно правильно указать размер, т. к. в противном случае такие данные будут недоступны.
Что касается случая, когда запрос в запросной группе не связан с таковой, то такая группа называется "Незапросной группой". Поскольку у незапросной группы нет связанного с ней запроса, в отличие от запросной группы, для заполнения которой мы программно исполняем запрос, в случае с незапросной группой вы должны программно устанавливать значения столбцов.