|
Часть VII П Р И Л О Ж Е Н И Я
Приложение A К Р А Т К И Й О Б З О Р С В О Й С Т В
В данном приложении перечисляются свойства версии 3.0 SQL*Forms, отличющиe
ее от предыдущих версий. А именно:
- новые свойства
- изменненные свойства
Новые свойства
Следующие свойства версии 3.0 являются новыми для SQL*Forms:
- подключенная вспомогательная система
- способность вызывать SQL*Forms из программы 3GL, являющейся
программой на Си языке
- обеспечение главенства по умолчанию
- поддержка создания последовательной нумерации
- способность к усилению ограничений целостности
- внешние подпрограммы окон
- обеспечение работы мыши
- динамические характеристики поля
- маски отображения поля
- редактор верхнего поля
- верхние страницы
- способность копировать и делать ссылки на объект
- объединение (интеграция) PL/SQL
- способность запускать SQL*Menu из прикладных программ SQL*Forms
- новые триггеры:
On-Database-Record On-Remove-Record
On-Delete On-Update
On-Error On-Validate-Field
On-Insert On-Validate-Record
On-Lock Post-Commit
On-Message Pre-Commit
On-New-Record
Новые пакетные процедуры (так называемые макросы):
ANCHOR_VIEW LAST_RECORD
BREAK MOVE_VIEW
CLEAR_EOL POST
COPY RESIZE_VIEW
DISPLAY_FIELD SET_FIELD
FIRST_RECORD SHOW_PAGE
GO_RECORD USER_EXIT
HIDE_PAGE
- Пакетные функции:
BLOCK_CHARACTERISTIC FORM_FAILURE
ERROR_CODE FORM_FATAL
ERROR_TEXT FORM_SUCCESS
ERROR_TYPE NAME_IN
FORM_CHARACTERISTIC
- Новые системные переменные
-- 28 --
SYSTEM.BLOCK_STATUS SYSTEM.LAST_RECORD
SYSTEM.CURSOR_RECORD SYSTEM.RECORD_STATUS
SYSTEM.FORM_STATUS SYSTEM.TRIGGER_RECORD
SYSTEM.LAST_QUERY
- DATETIME data type
- LONG data type
- Column-level security
- User preference file
Измененные свойства
Следующие свойства, имевшие место в предыдущих версиях SQL*Forms, в версии 3.0
изменены:
- вся документация полностью пересмотрена и обновлена
- согласование SQL*Forms (Проектирование) полностью пересмотрено
- вы можете устанавливать размер массива на основе каждого блока
- усилен режим отладки
- полностью пересмотрен формат INP файла
- "экранный живописец" имеет дополнительные возможности
- использование [Previous Block], [Next Block], [Previous Page] и
[Next Page]
- индикаторы для X и Y координат курсора
- прокрутка, позволяющая создавать формы, больших размеров, чем экран
- Вы можете отображать список величин, таких как верхнее окно, и вы можете
заполнять список с помощью оператора Select.
- Допустимыми являются два типа триггеров (V2 и V3).
- Большее число функций может редактировать триггеры.
- Cледующие команды имеют новые аргументы:
CALL CLEAR_FORM
CALL_QUERY EXIT_FORM
CLEAR_BLOCK
- Экран Show Keys может выполнять прокрутку, чтобы показать больше
описаний функциональных ключей.
- Все предложения SQL*Forms (Текущая форма) теперь появляются в диалоговом
блоке.
- Все определения базовой таблицы SQL*Forms - изменены.
- Строка статуса SQL*Forms (Текущая форма) изменена.
- Все сообщения и ошибки пронумерованы для облегчения идентификации.
- Oracle*Terminal заменяет утилиту CRT.
Приложение B
С О В М Е С Т И М О С Т Ь С Н И З У В В Е Р Х
В этом приложении рассматривается вопрос о том, как прикладные программы,
созданные в предыдущих версиях SQL*Forms, можно совмещать с версией 3.0
SQL*Forms. Ниже представлены следующие темы:
- трансляция (перевод) триггеров в PL/SQL
- изменение типов данных
Трансляция триггеров в PL/SQL
-- 29 --
В данном разделе описывается, как нужно транслировать версии 2.0/2.2/2.3
триггеров, записанных на языке функционального кода, в PL/SQL. Целью
является обеспечение прямой трансляции таким образом, чтобы новый триггер
вел себя идентично старому.
Хотя триггеры V2 будут работать в версии 3.0 SQL*Forms, Oracle Corporation
рекомендует вам преобразовать все ваши триггеры типа V2 в тип V3. Это
преобразование позволит вам улучшить и облегчить выполнение прикладных
программ.
Аналоги: Триггеры версий V2 и V3 4-2
Общие Чтобы перевести триггер V2 в V3, необходимо
вопросы придерживаться следующей структуры, которая преобразует
трансляции каждый шаг триггера V2 во вложенные блоки PL/SQL с
охватывающим алгоритмом для оперирования процедурой
успех/отказ.
Транслированный триггер принимает следующий вид:
DECLARE
abort_trigger BOOLEAN;
return_code BOOLEAN;
ignore_failure BOOLEAN;
ignore_trigger_failure EXEPTION;
BEGIN
trigger_step_block;
[trigger_step_block;
trigger_step_block;
...]
EXEPTION
WHEN ignore_trigger_failure THEN NULL;
END;
где trigger_step_block это:
{ } і }
DECLARE
fail EXEPTION;
BEGIN
step_logic;
abort_trigger := FALSE;
ignore_failure :=FALSE;
return_code := TRUE;
EXEPTION
WHEN fail THEN
abort_trigger := TRUE; ignore_failure := FALSE; і ;1
abort_trigger := TRUE; ignore_failure := TRUE; і ;2
abort_trigger := FALSE: ignore_failure := FALSE і ;3
END;
IF abort_trigger
THEN IF ignore_failure
THEN RAISE ignore_trigger_failure;
ELSE RAISE form_trigger_failure;
END IF;
-- 30 --
ELSIF return_code
THEN GOTO {-1success_label-0 і step_n+1};
ELSE GOTO {-1 failure_label-0 і step_n+1};
END IF;
где:
;1 Используется только при включенной характеристике Abort On Failure
;2 Используется при включенных характеристиках шагов триггеров
Abort On Failure и Succeed on Abort
;3 Используется, если не включенны характеристики шагов
триггеров Abort On Failure и Succeed on Abort
step_n Определяет номер для шага
step_label Определяет метку для шага. Метка шага предшествует номеру
шага (step_n)
step_logic Определяет трансляцию шага оператора
success_label Специфицирует характеристику шага триггера Success Label, если
она существует
step_n+1 Определяет номер следующего шага в последовательности
failure_label Специфицирует характеристику шага триггера Failure Label для
шага, если он определен
Замечение: Если любая из success_label, failure_label, step_label, или
step_n приводит к несуществующим меткам, замените оператор
GOTO выражением RAISE ignore_trigger_failure.
Аналоги: PL/SQL 15-1
Трансляция SQL
Переведите шаги триггера, содержащие операторы SQL в операторы PL/SQL.
Существует два типа шагов SQL, которые вам может понадобиться перевести:
- шаги, содержащие операторы SELECT
- шаги, содержащие фразы DML
Трансляция Существует два типа операторов SELECT, которые вам может
операторов понадобиться перевести:
SELECT
- операторы с предложениями INTO
- операторы без предложений INTO
Помните, что вы должны специальным образом учитывать операторы, сравнивающие
поля или выполняющие математические выражения. Вы можете записывать их как
булевы выражения. Такое приближение позволяет вам экономить ресурсы базы
данных, убыстряет выполнение и легко считывается. Например, рассмотрим
триггер, содержащий следующие шаги:
STEP1 Success Label = STEP 3
Failure Label = STEP 2
SELECT 'X ' FROM DUAL
WHERE :SAL > : ENDRTIG;
-- 31 --
STEP2 #EXEMACRO MESSAGE 'Comission cannot be
greater than salary.'; ENDTRIG;
STEP3 #EXEMACRO NXTFLD;
Вы должны преобразовать эти операторы в следующий одиночный оператор PL/SQL:
IF : SAL > :COMM
THEN NEXT_FIELD;
ELSE MESSAGE ('Commission cannot be greater than
salary.');
END IF;
Для операторов SELECT без предложений INTO необходимо добавить следующие
пункты к секции DECLARE шаг_блок:
FAIL EXEPTION;
dummy_into_buffer CHAR (240);
CURSOR dummy_select_into_cursor IS
SELECT select_list
FROM table_list
[where_clause]
Ниже представлен текст шага_алгоритма для оператора SELECT без предложения INTO
OPEN dummy_select_into_cursor;
FETCH dummy_select_into_cursor
INTO dummy_into_buffer;
IF dummy_select_into_cursor #NOTFOUND
THEN RAISE fail;
END IF;
Для операторов SELECT c фразой INTO в секцию DECLARE добавляются следующие
пункты:
CURSOR DUMMY_SELECT_INTO_CURSOR IS
SELECT select_list
FROM table_list
[where_clause]
Ниже представлен текст алгоритма для операторов SELECT без фразы INTO:
OPEN dummy_select_into_cursor;
FETCH dummi_select_into_cursor
INTO :[block.]field_name], :[block.]field_name2,...;
IF dummy_select_into_cursor #NOTFOUND
THEN RAISE fail;
END IF;
Транслиро- Для операторов DML (кроме SELECT) используйте следующий
вание код:
операторов
DML DML_statement;
-- 32 --
IF SQL#NOTFOUND
THEN RAISE fail;
END IF;
где DML_statement прямая копия шага.
Замечание: SQL - это имя курсора по умолчанию.
Транслиро- Операторы функционального кода следующей формы
вание транслируются в соответствующую пакетную процедуру
операторов SQL*Forms:
функциональ-
ного кода #EXEMACRO function_code; [function_code;
function_code;...]
Помните, что некоторые функциональные коды не
транслируются напрямую в пакетные процедуры V3.
Аналоги: Сравнение функциональных кодов V2
c эквивалентами V3 F-36
Транслиро- Операторы CASE транслируются в PL/SQL с помощью
вание операторов IF и ELSIF и ELSE. Следующий оператор CASE
операторов CASE
CASE selector IS
WHEN criteria_1 THEN action_list_1
WHEN criteria_2 THEN action_list_2
WHEN OTHERS THEN action_list_3
END CASE;
транслируется следующим образом:
IF selector = criteria_1
THEN action_list_1;
ELSIF selector = criteria_2
THEN action_list_2;
ELSE action_list_3;
END IF;
Аналоги: Оператор CASE F-38
Транслиро- В данном разделе рассказывается о том, как нужно
вание транслировать SQL*Forms команды, отличные от #EXEMACRO.
команд
SQL*Forms
#COPY В большинстве случаев #COPY транслируется в оператор PL/SQL.
Если исходный пункт или пункт назначения не является
косвенным при использовании ссылочных переменных, то
команда #COPY транслируется следующим образом:
Команда V2
#COPY {sourse і quoted_string} [INTO] [:]target[;]
транслируется как:
-- 33 --
:target := {sourse і quoted_string};
#ERASE
Команда #ERASE транслируется прямо в пакетную процедуру, как указано в
следующем примере. Команда #ERASE
#ERASE {[&]GLOBAL.variable_name і [&][block.] field_name}[;]
транслируется как:
ERASE({[NAME_IN(]'GLOBAL.variable_name'[)] і[NAME_IN(]'[block.] field_name'});
Аналоги: Пакетная процедура ERASE 16-14
#HOST
Команда #HOST транслируется в пакетную процедуру SQL*Forms, как показано в
следующем примере.
Команда #HOST
#HOST {quoted_string і &{[block] field_name і GLOBAL.variable_name})[;]
транслируется как:
#HOST ({quoted_string і NAME_IN ('{[bock] field_nameі GLOBAL.variable_name]});
Аналоги: Пакетная процедура HOST 16-18
Транслиро- Вызов пользовательского выхода выполняется как указано
вание ниже. Вызов в следующей форме
пользова-
тельского # [#] user_exit_name_parameter_list
выхода
транслируется как:
USER_EXIT ('user_exit_name'.'parameter_list');
Аналоги: Пользовательский выход, вызов из триггера V3
Изменение типов данных
Версия 3.0 полностью полностью поддерживает типы данных ORACLE RDBMS. В
предыдущих версиях SQL*Forms cо всеми типами данных манипуляции производи-
лись как со строками символов, а в версии 3.0, все действия проводятся с
ними, как с реальными типами данных. Эти изменения могут вызвать проблемы при
расширении прикладных программ в версии 3.0.
Начиная с версии 2.3 SQL*Forms, вы можете создавать поля DATE, в которых
допустимым являются употребление как двухзначных чисел для обозначения
года, так и четырехзначных. Если оператор вводит дату, а поле имеет
достаточный участок памяти для четырехзначного числа, то оператор может
ввести все четыре цифры или последние две.
Например, если оператор вводит 31-DEC-88 в поле, имеющее достаточный
участок памяти для четырехзначного числа, то SQL*Forms интерпретирует
эту дату, как 31-DEC-0088. Такое функционирование связано с языком SQL
и должно быть сохранено, когда вы определяете поля DATE.
-- 34 --
Чтобы модифицировать существующее поле DATE таким образом, чтобы оно
показывало четырехзначное обозначение года, необходимо увеличить поле даты на
два пробела, для чего используйте [Resize Field].
Замечание: Это свойство не относится к полям JDATE и EDATE.
Приложение С
A D V I S O R Y ( У К А З А Н И Я )
Вданном приложении представлена информация о том, что может влиять на
эффективность работы и нарушать ваши прикладные программы.
Эта информация разделена на главки. Каждое указание сопровождается
списком аналогов, дающим справку о том, в какой части руководства вы можете
найти соответствующую информацию.
Глава Указания Аналоги
----------------------------------------------------------------------
Фундамен- Не пытайтесь переделывать путь Путь передвижения 3-4
тальная передвижения, помещая команды
обработка передвижения в триггеры,
запускаемые во время передвижения.
Убедитесь, что после проверки не Проверка полей 3-9
изменилась величина проверяемого
поля.
Не начинайте связь с базой данных Блокировка 3-15
или прокрутку назад, когда SQL
оператор находится в триггере.
Избегайте помещать исключающие Блокировка 3-16
блокировки в таблицы прикладных
программ.
Будьте осторожны при изменении Изменение данных 3-21
данных в полях базы данных
через триггеры во время процесса
связи.
В режиме Enyer Query триггеры не Режим Enter Query 3-29
запускаются.
----------------------------------------------------------------------
Концепция Проектируйте новые прикладные Версии триггеров
триггеров программы с триггерами V3, V2 V3 4-2
триггеры типа V2 замените
триггерами V3.
Cледуйте правилам по Выполнение операторов
использованию операторов DML SQL 4-5
(Data Manipulation Language)
в триггерах.
-- 35 --
Не используйте операторы DDL Выполнение операторов
(Data Definition Language) SQL 4-5
в триггерах.
----------------------------------------------------------------------
Страницы При определении верхних страниц, Характеристика
следуйте правилам размещения и размещения
размеров отображения. отображения 10-8
Характеристика размещения
страницы 10-9
Характеристика размеров
отображения 10-9
----------------------------------------------------------------------
Блоки Существует нижний предел числу Характеристика
записей, которые могут быть блока Records
буферированы в одном блоке. Buffered 11-15
Если оператору нужно вставить Характеристика
записи в форму, то невыделенный блока Select
столбец в базе данных должен Column 11-16
быть определен не как NOT NULL.
Если вы хотите установить Конфигурация
конфигурацию хозяин-подчиненный хозяин-подчиненный
автоматически, вы должны создать (Master-detail) 11-20
сождать рабочий блок в форме
Default Block.
----------------------------------------------------------------------
Поля Будьте осторожны при Характеристики
комбиннировании характеристик полей 12-4
полей, комбинация должна иметь
смысл.
Вы не можете прямо запрашивать Тип данных LONG 12-8
поле LONG в фразах WHERE или
ORDER BY любого оператора SELECT.
Чтобы избежать ослабления Характеристика
соотношений "чужой ключ", Enforce Foreign
вам необходимо координировать Key 12-12
использование характеристик полей
Enforce Foreign Key и Input Allowed.
Для полей с типом данных NUMBER Характеристика поля
вы должны быть убеждны, что длина Field Length 12-14
поля достаточна для того, чтобы
не произошло усечения.
Вы не можете создавать поля, Характеристика поля
основой которых служит столбец, Field Name 12-14
имя которого содержит пробелы.
-- 36 --
Когда вы устанавливаете длину Характеристика поля
для поля, вы должны оставлять Format Mask 12-15
место для элементов формата маски.
Длина дла поля запроса всегда Характеристика поля
должна быть больше или равна Query Length 12-21
длине поля.
Когда вы хотите вырезать и Характеристика поля
вставить поля в "экранном Sequence Number 12-22
живописце", SQL*Forms изменяет
значение порядкового номера по умолчанию.
----------------------------------------------------------------------
Триггеры Если вы изменяете имя именного Характеристика
триггера пользователя в триггера Trigger
существующих прикладных Name 14-7
программах, убедитесь в том,
что вы также изменили все ссылки.
Помните, какие команды являются Типы триггеров 14-18
допустимыми в различных триггерах.
Во время передачи транзакций Триггер On-Delete 14-13
тригггеры On-Insert, On-Update Триггер On-Insert 14-14
и On-Delete заменяют выполнение Триггер On-Update 14-16
SQL*Forms действий по умолчанию,
такие как вставка, изменение и
уничтожение.
Триггеры On-Error и On-Message Триггер On-Error 14-14
заменяют запись сообщений по Триггер
умолчанию. On-Message 14-15
Триггер On-Lock заменяет Триггер On-Lock 14-15
выполнение SQL*Forms действий
по блокированию строк.
Вместо именных триггеров Именные триггеры
пользователя, используйте пользователя 14-25
процедуру форма-уровень.
умолчанию.
----------------------------------------------------------------------
PL/SQL Придерживайтесь правил, PL/SQL, ограничения
относящихся к процедурам PL/SQL, внутри SQL*Forms 15-7
касающихся объектов и функций
SQL*Forms.
Если ваши прикладные программы Пакетная процедура,
поддерживаются многими языками отказ 15-8
программирования, не
употребляйте входных триггеров,
зависящих от пакетной процедуры
ERROR_TEXT.
-- 37 --
----------------------------------------------------------------------
Пакетная Следуйте правилам, относящимся Пакетная процедура
процедура к отображению, сдвиганию, заданию ANCHOR_VIEW 16-5
размеров, при работе с верхними Пакетная процедура
страницами. HIDE_PAGE 16-18
Пакетная процедура
MOVE_VIEW 16-20
Пакетная процедура
RESIZE_VIEW 16-25
Пакетная процедура
SHOW_PAGE 16-28
Если вы используете операторы Пакетная процедура
PL/SQL COMMIT или ROLLBACK CLEAR_FORM 16-9
в анонимном блоке иле процедуре Пакетная процедура
форма-уровень, SQL*Forms COMMIT_FORM 16-10
интерпретирует эти операторы
как COMMIT_FORM и CLEAR_FORM
соответственно.
Осведомляйтесь о пакетных Пакетная процедура
процедурах ENTER_QUERY ENTER_QUERY 16-15
или EXECUTE_QUERY, при Пакетная процедура
употреблении параметров EXECUTE_QUERY 16-15
ALL_RECORDS и FOR_UPDATE.
Придеоживайтесь соответствующих Пакетная процедура
правил, когда используете SET_FIELD 16-26
пакетную процедуру SET_FIELD
для модификации характеристик
полей.
Некоторые процедуры являются Защищенные пакетные
защищенными и могут процедуры 16-29
использоваться только в некоторых
триггеров.
----------------------------------------------------------------------
Пакетные В V3 триггерах вместо ссылочных Пакетная функция
функции переменных используйте пакетную NAME_IN 17-10
функцию NAME_IN.
----------------------------------------------------------------------
Переменные SYSTEM.CURRENT_BLOCK, SYSTEM.CURRENT_BLOCK
SYSTEM.CURRENT_FIELD и 18-5
SYSTEM.CURRENT_VALUE включены SYSTEM.CURRENT_FIELD
в версию 3.0 SQL*Forms. 18-6
Корпорация Oracle рекомендует вам SYSTEM.CURRENT_VALUE
альтернативную системную 18-6
переменную, предусмотренную в
версии 3.0.
Вы не можете использовать SYSTEM.MESSAGE_LEVEL
системную переменную 18-10
SYSTEM.MESSAGE_LEVEL для подавления
предложений или сообщений об
ошибках.
-- 38 --
----------------------------------------------------------------------
Пользова- Не проводите прокрутку назад или Операторы EXEC SQL
тельские связь с базой данных в 19-4
выходы пользовательских выходах или если
в формах есть изменения, не
переданные в базу данных при вызове
пользовательского выхода.
Следуйте правилам, относящимся к Пользовательские
именным выходам пользователя и к выходы, защита 19-8
выполнению I/O из пользовательского
выхода.
Версии тестов пользовательских Таблица IAPXTB 19-9
выходов необходимо держать в
отдельной таблице IAPXTB.
----------------------------------------------------------------------
Работа SQL*Forms не поддерживает Условные обозначения,
с объектами условных обозначений с двойными объекты 20-2
кавычками, принятые в ORACLE.
Не используйте служебных слов Служебные слова 20-2
ORACLE для идентификации объектов
SQL*Forms.
Осведомляйтесь о защиту Модифицированные
при модификации объектов ссылок. объекты ссылок 20-4
----------------------------------------------------------------------
Ограничения Осведомляйтесь о главных Ограничения
целостности ограничениях целостности объектов целостности 22-1
и курсоров, а также об
ограничениях целостности памяти
вашей операционной системы.
----------------------------------------------------------------------
Компоненты Бессмысленные комбинации Комбинирование
переключателей командной строки переключателей
могут вызвать ошибку, когда вы командной строки 23-8
попытаетесь выполнить команду.
Следующие переключатели не -n переключатель для
действуют в версии 3.0 SQL*Forms: SQL*Forms
(Проектирование) 23-12
-n переключатель для SQL*Forms -o переключатель для
(Проектирование) SQL*Forms
(Генерирование) 23-14
-o переключатель для SQL*Forms -s переключатель для
(Генерирование) SQL*Forms (Генерирование)
-s переключатель для SQL*Forms
-o переключатель для SQL*Forms -o переключатель для
(Текущая форма) не оказывает SQL*Forms (Текущая
влияния на операторы в триггерах форма) 23-18
V3.
-- 39 --
-t переключатель для SQL*Forms -t переключатель для
(Текущая форма) не оказывает SQL*Forms (Текущая
никакого влияния при замене форма) 23-20
стандартного процессирования
SQL*Forms на On-Insert, On-Update
и On-Delete триггеры.
----------------------------------------------------------------------
Запоминание Не пытайтесь пересылать формы Мобильность между
форм из одного типа комппьютера на системами 24-3
другой, пересылая INP файл.
Не импортируйте и не экспортируйте Мобильность между
таблицы IAP 11 unless 11 конечная системами 24-3
------------
система не имеет форм в базе данных.
Oracle Corporation сохраняет за Базовые таблицы
собой право изменять базовые SQL*Forms
таблицы SQL*Forms (Проектирование) (Проектирование)
в любое время без уведомления. 24-4
Не работайте с базовыми таблицами Базовые таблицы
SQL*Forms (Проектирование) через SQL*Forms
SQL*Plus. (Проектирование)
Редактирование INP файлов может Формат INP файла 24-13
нарущить ваши прикладные программы.
Oracle Corporation не поддерживает
редактирование этих файлов.
----------------------------------------------------------------------
Связь Не пользуйтесь вызываемой формой Вызов форм из
с другими из выхода пользователя. программ 25-10
продуктами Применяйте пакетную процедуру CALL.
----------------------------------------------------------------------
Опции Рабочая опция Share Cursors for Рабочая опция
Implicit SQL не оказывает никакого Share Cursor for
воздействия, если вы заменяете Implicit SQL 26-4
стандартное процессирование
SQL*Forms на триггеры On-Insert,
On-Update и On-Delete.
Рабочая опция Share Cursors for Рабочая опция
Implicit SQL не оказывает никакого Share Cursor for
воздействия на операторы в Implicit SQL 26-4
триггерах V3.
----------------------------------------------------------------------
Специальные Если вы проектируете форму для Среда блочного
соображения среды блочного режима или в ней, режима D-2
необходимо осведомляться о
специальных соображениях.
-- 40 --
Если вы проектируете форму для Среда блочного
растровой среды или в ней, режима D-2
необходимо осведомляться о
специальных соображениях.
Приложение D
C П Е Ц И А Л Ь Н Ы Е С О О Б Р А Ж Е Н И Я
SQL*Forms работает в системах различных конфигураций. В данной части
приводится описание того, как SQL*Forms работает в среде текстового режима.
Описание хорошо подходит ко всем средам, но существуют некоторые
различия, о которых вы должны быть осведомлены, когда разрабатываете свои
прикладные программы вне среды текстового режима и/или если ваши
прикладные программы операторы выполняют вне среды текстового режима.
В данном приложении обсуждаются специальные соображения относительно
разработки прикладных программ SQL*Forms в следующих средах:
- среда блочного режима
- растровая среда
Аналоги: Ограничения целостности 16-битовой среды 22-4
Среда блочного режима
Если вы разрабатываете прикладные программы SQL*Forms в среде блочного
режима, вам необходим учитывать правила, относящиеся к следующим действиям:
- установка проверочной единицы
- использование триггеров
- создание полей
Помните также о следующих моментах, характерных для использования терминалов
блочного режима:
- Терминал блочного режима, в отличие от терминала символьного режима,
не распознается, когда оператор заново вводит текущее значение поля в
поле.
- Первая буква выбора меню не работает в терминале блочного режима.
- В среде блочного режима SQL*Forms действует всегда, когда включены
характеристики поля Automatic Hint.
Аналоги: Характеристика поля Automatic Hint 12-3
Cостояние проверки поля, Changed 3-7
Установка В среде блочного режима проверочной единицей по
проверочной умолчанию является блок. Поскольку вы можете определять
единицы проверочную единицу в данной среде, ваши формы будут работать
медленнее с проверочными единицами поля или записи из-за
возросшего числа главных прерываний.
Если вы проектируете прикладные программы, которые будут работать в среде
блочного режима, а вы работаете в среде текстового режима, используйте
рабочую опцию Set Block Validation as Default. Эта опция определяет блок, а
не поле в качестве проверочной единицы, что облегчает вам создание и
тестирование формы, работающей в терминале блочного режима.
Аналоги: Рабочая опция Set Block Validation as Default
Проверочная единица 3-7
-- 41 --
Использо- По умолчанию, формы, проектируемые вами в среде блочного
вание режима, будут применять проверочную единицу блока.
триггеров В результате, когда вы проектируете формы, вы должны
в блочном обязательно учитывать, что SQL*Forms запускает только
режиме триггеры передвижения (т.е. Post-Field, Pre-Block) c уровнем
разрешения большим или равным проверочной единице. Если вы
используете проверочную единицу поля в среде блочного режима, то
порядок, в котором оператор двигается из поля в поле, является
функцией используемого терминала.
Аналоги: Триггеры, уровень разрешения 4-2
Создание Если вы разрабатываете формы, которые будут работать
полей в в среде блочного режима, то при создании полей вы
блочном должны придерживаться следующих правил:
режиме
- В форме перед и после каждого поля должны стоять пробелы. При таком
формате резервируется место для файла свойств, идентифицирующего качества
полей. Если между двумя полями или полем и текстовой константой нет
пробелов, то форма не будет выполняться. Помните, что при создании
блока по умолчанию пробелы вставляются автоматически.
- Старайтесь не располагать часть поля или текстовой константы в последнем
столбце экрана.
- Убедитесь в том, что поле или текстовая константа не располагаются вне
границ поля зрения, поскольку это может привести к ошибкам на
последующеих страницах.
Использо- В некоторых терминалах, пользующихся средами блочного
вание режима, используется прокрутка полиэкрана, прокручивающая
текстовых целую экранную линию за один раз. Это может вызывать
констант нежелательные моменты, если вы имете текстовые константы
в блоковом в той же строке, что и поле, принадлежащее блоку с
режиме множеством записей. Когда запись этого блока уходит с
экрана при прокрутке, текстовая константа также исчезает из
поля зрения. Рис. 1 демонстрирует такой случай.
Рисунок D-3 Ъ------------------------------------------------------Дї
Прокрутка і і
текстовой і Before Scrolling After Scrolling і
константы і Ъ------------------ї Ъ------------------Дї і
і іEmplouer Emplouer і іEmplouer Emplouer і і
і іNumber Name і іNumber Name і і
і і7369 SMITH і Ъ> 7521 WARD <ї і
і і7499 ALLEN і і і7566 IONES і і і
і і і і і і і і
Текстовые і А------------------Щ і А------------------ДЩ і і
константы --Е----------------------------Б------------------------Щ і
ушедшие с і і
экрана А------------------------------------------------------
Растровая среда
-- 42 --
Если вы разрабатываете прикладные программы SQL*Forms в растровой среде,
вы должны иметь информацию о том, чем пользовательский интерфейс здесь иной,
чем в текстовом режиме. А именно, существует разница в использовании
функциональных клавиш.
Если вы разрабатываете прикладные программы SQL*Forms, которые будут работать
в растровой среде, вы должны знать, как изменится передвижение (navigation),
если оператор воспользуется мышью.
Элементы В растровых средах интерфейс SQL*Forms (Проектирование)
сопряжения может иметь отличия от того как он описывается в данной
в растровой книге. Например, контролбный блок может оказаться
среде реальным блоком вместо пункта в скобках. Такие различия
возникает, поскольку SQL*Forms использует элементы
сопряжения с растровыми системами в натуральной форме.
Функциональ- В растровых средах вы можете пользоваться функциональными
ные клавиши клавишами SQL*Forms для выполнения стандартных
в растровой проективных функций. Однако, вам может понадобиться
среде возможность воспользоваться мышью для выполнения этих функций.
[Select] Нажмите и отпустите мышь на выбранном вами пункте.
Вы можете также использовать мышь для включения и
выключения контрольного блока.
Все другие Если функциональные клавиши соответствуют кнопкам на
вашем экране, нажмите и отпустите мышь на кнопке,
соответствующей желаемой функции.
Перемещение Если вы разрабатываете прикладные программы SQL*Forms
в растровой для работы в растровой среде, обратите особое внимание
среде на характеристику формы Mouse Navigation Limit. Эта
характеристика определяет, какое поле (или какие поля) оператор
может сделать текущими в любой момент с помощью мыши.
По умолчанию, оператор может нажать и отжать (click on) любое
поле формы. Однако вам может понадобиться установить защиту
для ваших прикладных программ от действий оператора.
|
|