- •Содержание
- •Repository
- •Средства тестирования и анализа
- •Утилита Workbench Organizer
- •Резюме
- •Резюме
- •Резюме
- •Глава 6.Моделирование сущностей и связей
- •Глава 10. Подпрограммы и функции
- •Создание функций увеличения возможности многократного использования текстов
- •Функциональные группы и функции
- •Чтение единственного элемента таблицы
- •Извлечение единственного поля
- •Получение статистической информации
- •Упорядочение результатов запроса
- •Динамическая выборка данных
- •Использование составных критериев выборки Select-Options
- •Динамическое присвоение имен таблиц
- •Вложенные циклы select
- •Представления, определенные в АВАР/4 Dictionary
- •Размер внутренней таблицы
- •Сортировка элементов внутренней таблицы
- •Вставка нескольких строк
- •Изменение таблиц базы данных с помощью команды update
- •Изменение отдельного элемента
- •Изменение нескольких элементов
- •Удаление элементов таблицы базы данных с помощью команды delete
- •Динамическое задание имен таблиц
- •Резюме
- •Временное хранение
- •Пропуск объектов
- •Использование локальных имен для объектов памяти
- •Очистка содержимого объектов памяти
- •Создание отчета
- •Сравнение двух отчетов, разработанных с использованием разных средств
- •Создание программного текста
- •Обработка данных с помощью событий get
- •Что применять: команду select или Logical Databases
- •Задание составных критериев выборки
- •Порядок обработки событий get
- •Работа с несколькими таблицами
- •Глава 16. Пользовательский интерфейс для создания отчетов
- •Определение параметров для экрана выбора
- •События экрана выбора
- •Повышение производительности программы
- •Резюме
- •Детализация объектов
- •Двойной щелчок мышью: событие at line-selection
- •Определение статуса графического интерфейса
- •Проектирование инструментальной линейки приложения
- •Изменение стандартной инструментальной линейки
- •Положение курсора и скрытая информация
- •Команда hide
- •Команда get cursor
- •Фреймы (кадры)
- •Глава 18. Выполнение программы-отчета
- •Вычисление даты в варианте
- •Описание учебной задачи
- •Создание диалоговой программы
- •Создание экрана
- •Задание фрейма с заголовком
- •Работа с сообщениями
- •Вывод сообщения из программы
- •Логический рабочий блок (LUW)
- •Механизм блокировки системы R/3
- •Глава 22. Расширенные функции графического интерфейса
- •Глава 25. Автоматическая генерация программы
- •Связь между программами
- •Вызов удаленной функции
- •Резюме
- •Удаление связей объектов
- •Резюме
- •Приложения
- •Использование Logical Databases при работе с утилитой АВАР/4 Query
- •Простейшие запросы
- •Получение перечня программных элементов
- •Создание заданий (Tasks) и запросы на изменения (Change Requests)
Считывание данных с помощью Logical Databases |
173 |
|||
|
|
|
|
|
таблица customers принадлежит к первому уровню иерархии (и изображается в верхней части экрана), таблица bookings — ко второму уровню (это показано уходящей вниз ветвью).
Смысл использования древовидной структуры поясняется в разделе "Порядок выполнения событий get".
Что применять: команду select или Logical Databases
Имеется несколько существенных различий между двумя программами, приведенными в предыдущем разделе:
• Вторая программа генерации отчета использует два события get, а не вложенные циклы select.
• В первой программе отношение внешнего ключа между таблицами customers и bookings задается в условиях предложения where, что отсутствует во второй программе, где это отношение моделируется древовидной структурой Logical Database. Данная структура определяет также порядок обработки событий get.
• В первой программе критерии выборки (дата авиарейса и дата заказа) задаются в предложении where. Во второй программе эти критерии задаются динамически конечным пользователем — они могут быть выбраны без изменения исходного текста.
Каждый отчет может иметь только одну Logical Database, однако одна Logical Database может использоваться несколькими отчетами, и это одна из главных причин их применения. Logical Database упрощает и инкапсулирует извлечение данных; не нужно описывать технические детали, такие как предложения where и команды select, когда для создания отчета применяется логическая база данных. Все модификации и улучшения, сделанные в рамках логической базы данных, будут сразу отражаться на характеристиках всех отчетов, использующих ее.
Преимущества использования Logical Database показаны ниже, в разделе "Преимущества Logical Databases".
Задание составных критериев выборки
Критерии выборки во втором примере программы-отчета демонстрируют два важных случая:
•Отдельные величины (например, дата заказа = 01/01/1999)
•Нижние границы (например, дата полета > 05/01/1999)
Кроме них, конечный пользователь может задавать другие критерии выборки:
•Интервалы (например, имена между А и М)
•Базисные значения (например, имена, начинающиеся с буквы S)
•Отрицание всех указанных выше условий
•Комбинированные условия выборки (например, телефонные номера от 111-000-0000 до 666-999-9999, но не равные 333-444-2222)
Конечный пользователь может задавать любые из перечисленных критериев. Данные выбираются из таблиц базы согласно заданным критериям, и для этого не требуется изменять исходный текст программы.
В главе 18 будут рассмотрены варианты (Variants), позволяющие задавать для отчета предварительно определенные наборы критериев выборки, а также определять специфичные для отчета критерии, которые будут появляться на экране выбора отчета ниже стандартных
критериев, специфичных для базы данных. Эта технология программирования описывается в главе 16.
Порядок обработки событий get
Второй пример предыдущего раздела показывает, что порядок обработки различных событий get полностью определяется древовидной иерархией, заданной в Logical Database. В принципе структура дерева отражает отношение внешнего ключа между соответствующими таблицами. Структура логичес-
7 Зак. 65
174 |
Глава15 |
|
|
|
|
кой базы предыдущего примера включает как минимум отношение родитель — потомок между таблицами customers и bookings.
Важно понимать, что отчет, создаваемый на основе Logical Database, не предусматривает последовательной обработки во время выполнения. Вместо этого порядок работы определяется структурой логической базы. Все операторы после конкретного оператора get и перед следующим событием принадлежат данному событию get. Эти операторы выполняются всякий раз, когда внутренние процедуры логической базы считывают элемент соответствующей таблицы. Таким образом, порядок расположения событий get в исходном тексте программы создания отчета не имеет значения. События get могут интерпретироваться как отдельные модули, вызываемые системой.
Работа с несколькими таблицами
Часто в отчете применяется несколько таблиц. Предположим, что в отчете обрабатываются четыре таблицы ztabl-ztab4, связанные следующим образом:
•ztab1 — контрольная таблица для ztab2
•ztab2 — контрольная таблица для ztab3 и ztab4
При использовании операторов select отношения внешних ключей выражаются в форме различных уровней вложения:
Древовидная структура Logical Database содержит готовую к использованию модель отношения между таблицами (рис. 15.7).
Рис. 15.7
Структура сложной Logical Database
Считывание донных с помощью Logical Databases |
|
175 |
Следующий исходный текст программы, использующей Logical Database, реализует тот же самый отчет:
Этот отчет выводит на экран тот же список, что и предыдущий отчет, использующий вложенные операторы select. Обратите внимание, что событие get late обрабатывается только после того, как будут обработаны все элементы таблиц, находящиеся на более низком уровне иерархии по отношению к ztab2. Элементы таблицы ztab1 считываются при выполнении отчета, несмотря на то что соответствующее событие get отсутствует. Вообще говоря, таблица со структурой, описанной в Logical Database, будет считываться в следующих случаях:
1.Таблица соответствует событию get или get late в отчете.
2.Таблица является предшественницей одной из таблиц, определяемых пунктом 1.
Впредыдущем примере таблицы ztab2, ztab3 и ztab4 относятся к первому случаю, а таблица ztab1 — ко втором}'. В соответствии с этими правилами поддерево не обрабатывается (т.е. элементы таблицы не считываются из базы), если в отчете не встречается соответствующее событие get.
Древовидная структура Logical Database является свободно определяемым логическим представлением нескольких таблиц базы. Хотя в большинстве случаев отношение родитель — потомок отражает отношение внешнего ключа, иногда таблицы связаны через дополнитель-
ную подпрограмму Logical Database, и эта связь устанавливается во время выполнения отчета.
Использованиевнешнихсоединений
Logical Databases дает возможность установить внешнее соединение различных таблиц базы, даже если такая процедура и не поддерживается используемой на нижнем уровне СУБД. Обратимся вновь к первому примеру этой главы и предположим, что необходимо получить отчет о заказах клиентов на рейсы, которые состоятся позднее 06/30/1999. Допустим также, что нужно письменно уведомить клиентов, которые не заказывали билеты в этот период, т.е. понадобится узнать их фамилии. Если такой отчет строится на основе логической базы, то нет необходимости изменять исходный текст программы. Можно просто ввести новую нижнюю границу 06/30/1999 для даты полета на экране выбора параметров и сразу же получить требуемый список.
Очевидно, что точно такой же список можно получить и с помощью вложенных операторов select с новыми критериями выборки в предложениях where. Однако, используя представления, определенные в Dictionary, можно получить только внутреннее соединение таблиц customers и bookings. Например, там не окажется фамилии клиента Edison, который не заказывал билет в тот период времени.
Построениесобственнойлогическойбазы
Разработчик может создать собственную логическую базу, используя Object Browser в Development Workbench. Как правило, необходимо определить структуры, соответствующие критерию выборки, и процедуры доступа к базе данных. В дальнейшем разработанную Logical Database можно будет применять в любом отчете.
Подробная информация о создании и дальнейшем сопровождении логической базы содержится в руководстве пользователя АВАР/4 (User's Guide). Доступ к тексту руководства
можно получить на начальном экране Development Workbench, если указать элементы меню: Help > Extended Help.