ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



                  SQL*Forms
             Designer's Reference
                 Version 2.0
                                   Справочное руководство разработчика форм
                                                  Версия 2.0
                   ORACLE
                ESQL*FormsF
  EСправочное руководство разработчика формF
                 EВерсия 2.0F
                                                    ORACLE
                                              Система управления БД
     SQL*Forms.Справочник разработчика
                Версия 2.0
     Часть N 3304-V2.0.Февраль 1988
                                      Авторы: Джон Унгер Зуссман и Грег Гомез

     c Copyright 1986,1988 Корпорация ORACLE,Белмонт,Калифорния
     Сохраняются все права,отпечатано в США

                         Описание ограничения прав
     Использование,копирование,или разглашение содержания подвержено огра-
ничениям,указанным в вашем контракте с Корпорацией ORACLE.
     Использование,копирование,или разглашение содержания Правительством по-
двержено ограничениям,налагаемым на коммерческое программное обеспечение ко-
мпьютеров и предположительно будет регулироваться "Ограничениями прав на
программное обеспечение" согласно Федеральному Закону.
     Информация,изложенная в этом документе,м.б. в дальнейшем изменена без
специального предупреждения.Если у вас возникнут проблемы при работе с доку-
ментацией,пожалуйста,сообщите нам письменно.Корпорация ORACLE не гарантирует
отсутствия ошибок в данном документе.
     ORACLE,Easy*SQL и SQL*Plus - зарегистрированные торговые марки Корпора-
ции ORACLE.
     SQL*Forms - торговая марка Корпорации ORACLE.

                        EПредисловие переводчика.F
     Данный документ является продолжением цикла работ по переводу техничес-
кой документации Корпорации ORACLE,которая специализируется на разработке
БД,ориентированных на использование структурного языка запросов SQL.
     Системы управления БД на базе персональных компьютеров и,в частности,
СУБД ORACLE для микро- и мини-ЭВМ уже достаточно широко известны в СССР.
Однако,в настоящее время не существует устоявшейся терминологии для описа-
ния таких СУБД.Поэтому при переводе данного руководства терминология предс-
тавляла особую трудность,в результате чего помимо общеизвестных терминов в
ряде случаев группа переводчиков ввела дополнительные понятия для слов,не
имеющих соответсвующих аналогов в русском языке.
EПримечаниеF  Текст форматирован с использованием наиболее универсальных
                управляющих символов.Для вывода документа на печать настро-
                йте ваш принтер следующим образом:
     PRINTING
      MODE
      **
   PRINTING SPEED:
   DRAFT
   PRINTING MODE:
   10 CPI
   PAPER FORMAT
   AND HANDLING
    **
   AUTOMATIC SHEET FEEDER:
   YES
   FORM LENGTH (inches):
   11
   LINE SPAC.:
   (1/6)
   SKIP OV.PERF.:
   NO
   CODE INTERPRETER
   AND CHAR.GEN.
    **
   CODES INTERPRETER:
   IBM
   CHR.GENERATOR:
   IBM
   CHAR.SET:
   2
   NATIONALITY CHAR.SET
   CYRILLIC
   Остальные параметры можно устанавливать произвольно.

                При работе с оригиналом использовались:
 *  Англо-русский словарь по информатике и вычислительной технике под ред.
    Борковского (1988);
 *  Большой англо-русский словарь (1987 г.);
 *  Русско-английский словарь (1987 г.);
 *  Краткий англо-руский и русско-английский словарь (1985 г.);
 *  Переводные издания по ОС UNIX,СУБД DBASE 3 PLUS,RBASE,КАРС и др.;
 *  Глоссарий из "SQL*Plus.Справочное руководство."(перевод под редакцией
    группы переводчиков лаборатории "АСУ-Заказ".
   Мы предполагаем,что в данном переводе было достигнуто стремление наиболее
полно и доступно отразить авторский текст.В то же время не гарантируется от-
сутствие ошибок как в исходном тексте,так и в переводе.Обо всех ваших проб-
лемах при работе с документацией,пожалуйста,сообщайте письменно или по те-
лефону:    309530 Белгородская область, Старый Оскол, ОЭМК
           лаборатория "АСУ-Заказ", телефон 36-40-10, 36-40-65
   Ваши замечания и предложения будут необходимы для последующих редакций
предлагаемой вашему вниманию документации.

         Группа перевода: Алехина С.,Бабурина Э.,Габитов С.,Деревянко В.,
                          Леонтьева А.,Мысин А.,Пигорев П.,Шабанов Л.,
                          Шпачук В.

                              EПредисловиеF
   Данное руководство разъясняет,как следует использовать SQL*Forms (версия
2.0) для разработки форм.Формы облегчают работу с информацией СУБД ORACLE.
Если форма уже создана,то работа операторов с ней напоминает работу с неко-
торой условной формой на бумаге.
   Формы м.б. простыми (базисными) или сложными (комплексными) с проверкой
работы оператора и с включением набора средств,предоставляющих оператору ра-
знообразные варианты работы.
   Как и следует ожидать,более сложные формы труднее построить; они могут
использовать триггеры и серии команд.Эта книга дает возможность проникнуть в
сложности SQL*Forms так глубоко,как вы пожелаете.
   Книга является справочным руководством,что означает наличие в ней исчер-
пывающей информации по использованию ORACLE.Она организована так,что в ней
можно найти и понять любую информацию,которая вам необходима,однако,ее изу-
чение не всегда может оказаться легким.Другими словами,книга создана для то-
го,чтобы "объяснить,а не "научить".Если вы предпочитаете более учебный под-
ход,начните с руководства " SQF*Forms.Учебное пособие разработчика форм".

                              EАудиторияF
       С SQL*Forms имеют дело 3 категории специалистов:
 * Операторы,которые запускают формы для того,чтобы выбирать,редактировать и
   сохранять информацию в таблицах.
 * Разработчики,создающие формы,которые используют операторы.
 * Администраторы БД (АБД или DBA(англ.)),которые предоставляют право другим
   использовать SQL*Forms и выполняют другие административные функции для
   СУБД ORACLE.
         Это руководство предназначено для разработчиков форм SQL*Forms.Оно
окажется полезным также и для администраторов БД.
      Книга предполагает знакомство с основными понятиями ORACLE.Необходимо
знать,как создаются и структурируются таблицы и как вводится,извлекается и
изменяется информация.Если вы не знакомы с этим, обратитесь сначала к SQL*
Plus или Easy*SQL и только затем приступайте к изучению SQL*Forms.
      Полезно также приобрести некоторый опыт в использовании форм,прежде
чем начинать использовать эту книгу для создания форм.Информация о том,как
работают формы,м.б. получена из документа " SQL*Forms.Руководство операто-
ра".В завершение добавим,что если вы желаете использовать триггеры для конс-
труирования сложных форм,вы должны хорошо понимать язык SQL и условное прог-
раммирование.

                  EКак организовано данное руководствоF
     Информация в данном руководстве организована в 10 глав и 4 приложения.
Завершает руководство глоссарий.Ниже следует описание каждой главы и прило-
жений.

                      EГлава 1,"Что такое Форма ?"F
объясняет,на что похожи формы и как они относятся к СУБД ORACLE; почему же-
лательно их использовать и что можно делать с их помощью.

                    EГлава 2,"Функционирование SQL*Forms"F
описывает,как устанавливать SQL*Forms,как начинать и заканчивать сеанс рабо-
ты и какие опции следует выбирать в главном меню.

                      EГлава 3,"Использование SQL*Forms"F
описывает клавиши,используемые в SQL*Forms,применение окон,предоставляющих
пользователю возможность выбора и получение вспомогательной информации
(help).

                     EГлава 4,"Процесс Разработки Формы"F,
описывает шаги,которые необходимо выполнить,чтобы спланировать,создать,моди-
фицировать или проверить форму.

                    EГлава 5,"Экранный Построитель Форм"F,
объясняет,как оформлять поля и текстовую информацию в форме.

                 EГлава 6," Создание и Определение Блоков "F,
описывает,как создать блоки по умолчанию и блоки пользователя - такие отде-
льные части форм,которые соответствуют таблицам данных.Глава также описыва-
ет,как определить способ выполнения запросов и как отображаются на термина-
ле и проверяются на правильность данных записи блоков.

                  EГлава 7,"Создание и Определение Полей"F,
описывает,как создавать поля - области,с помощью которых оператор может про-
сматривать или вводить информацию.Она также объясняет,как выбрать типы дан-
ных и атрибуты для полей и как подвергнуть элементы полей проверке.

                          EГлава 8,"Триггеры"F,
объясняет,как определить триггеры,которые состоят из команд SQL и SQL*Forms
и дают оператору дополнительные средства,возможности проверки,повышают удоб-
ство работы с формами.

                   EГлава 9,"Синтаксис триггеров"F,
детально описывает команды SQL и SQL*Forms,которые можно использовать в три-
ггерах,с иллюстрацией работы триггеров на примерах.Она также показывает,как
из триггера вызвать подсоединяемую программу.

                  EГлава 10,"Компоненты SQL*Forms"F,
описывает подпрограммы,из которых состоит SQL*Forms,объясняет,почему может
возникнуть необходимость использовать их отдельно,и как это сделать.

                             EПриложение А,
"Сообщения об ошибках"F,содержит список сообщений об ошибках,которые вы мо-
жете видеть,их возможные причины и действия,которые можно предпринять при
возникновении ошибки.

               EПриложение В," Окна для Разработки Форм "F
- это справочное руководство по "механизму окон",который применяется для по-
строения форм.Оно объясняет каждое окно в отдельности и их взаимодействие.

              EПриложение С, " Подсоединяемые Программы "F,
объясняет,как писать собственные программы и как подсоединять их к форме.

                EПриложение D,"Техническая информация"F,
содержит правила наименования объектов и список резервированных слов.

  Глоссарий определяет термины,которые могут вам понадобиться.

                EКак использовать данное руководствоF
Самый короткий путь изучения руководства - начать с глав 2-3 для понимания
того,как установить SQL*Forms,начать и закончить сеанс работы с БД,использо-
вать клавиатуру и совершать выбор в окнах.Затем следует внимательно прочита-
ть главу 4 для того,чтобы получить общее представление о построении форм и
изучить программные средства.После всего этого вы можете приступить к проек-
тированию собственных форм.Приложение В описывает окна и их взаимодействие и
поэтому является наиболее важным для вас.Главы 5-7 полезно использовать для
приобретения детальной информации об экранном построителе форм,создании бло-
ков и полей.Мы рекомендуем,по крайней мере,для первых ваших форм,создавать
блоки,принимаемые по умолчанию,до тех пор,пока вы хорошо не поймете,в чем
смысл использования SQL*Forms (даже в дальнейшем,как правило,проще начинать
с блоков по умолчанию,а затем модифицировать их).
      Когда вы будете готовы к написанию триггеров,прочитайте главы 8-9.Гла-
ва 9 содержит многочисленные примеры,которые можно скопировать,изучить и
адаптировать.
  EПримерыF   Примеры в этой книге заимствованы из руководства :
                "SQL*Forms.Учебное пособие проектировщика форм".

                       EСоглашения по обозначениямF
    Клавиши,упоминаемые в этом руководстве,заключены в квадратные скобки,на-
пример: "Нажмите [SELECT] и [DEFINE] для того,чтобы высветить окно DEFINE
FIELD".
      Поскольку клавиатуры весьма разнообразны,клавиши обозначаются по их
функциям.Для того,чтобы определить,какие клавиши каким функциям соответству-
ют,необходимо использовать карту клавиатуры,которая приводится в документе
"ORACLE.Руководство по установке и использованию" для вашего компьютера.

      Синтаксические описания в данном руководстве используют следующие
                              соглашения:
 (...)   Указывают повторение предыдущего элемента.
 [ ]     Элементы в квадратных скобках являются необязательными (за исключе-
         нием тех случаев,когда квадратные скобки заключают в себе имя кла-
         виши).
 і       Вертикальная черта і разделяет альтернативные варианты.В том слу-
         чае,когда несколько альтернатив м.б. использованы,а могут и нет,они
         заключаются в квадратные скобки [ ].
  { }    В том случае,когда д.б. указана одна из альтернатив,они заключаются
         в фигурные cкобки.
         Например,выражение:      # EXEMACRO macro_statement;...
         означает:
         1.Наберите "# EXEMACRO".
         2.Наберите затем столько макровызовов,сколько необходимо,завершая
           каждый из них точкой с запятой (;).
         Обозначение:      #HOST{'command_string'і[block.]fieldіvar_ref}
         означает,что после набора "#HOST" должна следовать строка в апост-
         рофах или ссылка на блок/поле (block/field),или ссылка на перемен-
         ную (var_ref).Имя блока ([block.]) в ссылке на блок/поле необязате-
         льно.

                            EСвязанные публикацииF
      Для получения дополнительной информации по SQL*Forms,Версия 2,см.:
 * SQL*Forms.Учебное пособие разработчика форм,ORACLE Part No.3302 (SQL*
   Forms Designer's Tutorial,ORACLE Part No.3302 )
 * SQL*Forms.Руководство оператора,ORACLE Part No.3301 (SQL*Forms Operator's
   Guide,ORACLE Part No.3301)
 * SQL*Forms.Краткий справочник оператора ORACLE Part No.3704 (SQL*Forms
   Operator's Quick Reference,ORACLE Part No.3704)
 * SQL*Forms.Краткий справочник разработчика форм,ORACLE Part No.3708 (SQL*
   Forms Designer's Quick Reference,ORACLE Part No.3708)

                        EВаши замечания приветствуютсяF
Ваши замечания,как пользователя ORACLE,безусловно приветствуются.В конце
данного руководства приложен "Лист замечаний пользователя",который вы можете
использовать для описания того,что вам понравилось или не понравилось в этом
или других руководствах по ORACLE.Если такое приложение отсутствует или вы
желаете вступить с нами в контакт,позвоните по телефону (415) 589-8000 или
обратитесь по адресу:
        SQL*Forms Product Manager
        ORACLE Corporation
        20 Davis Drive
        Belmont,California 94002

+                                 EСОДЕРЖАНИЕF
                               EГЛАВА 1.ВведениеF
   Для чего используются формы?
   Что такое форма?
   Что можно делать с помощью SQL*Forms

                       EГЛАВА 2.Функционирование SQL*FormsF
   Установка
   Запуск SQL*Forms
   Окно "CHOOSE FORM"
   Выход из SQL*Forms

                        EГЛАВА 3.Использование SQL*FormsF
   Клавиатура
   Экран
   Получение вспомогательной информации (help)
   Окна

                        EГЛАВА 4.Процесс разработки формыF
   Планирование формы
   Создание формы
   Модификация формы
   Тестирование формы
   Копирование,переименование и удаление форм
   Специальные темы

                         EГЛАВА 5.Экранный построитель формF
   Вход и выход из экранного построителя форм
   Перемещение курсора
   Ввод константного текста
   Работа с блоками
   Работа с полями
   Создание рамок и линий
   Удаление,перемещение,копирование объектов
   и областей

                       EГЛАВА 6.Создание и определение блоковF
   Создание блока
   Определение блока

                       EГЛАВА 7.Создание и определение полейF
   Виды полей
   Создание поля
   Определение поля

                              EГЛАВА 8.ТриггерыF
   О триггерах
   Типы триггеров
   Определение триггера
   Как триггеры выполняются

                           EГЛАВА 9.Синтаксис триггеровF
   Команды SQL в триггерах
   Команды SQL*Forms в триггерах
   Команды подсоединяемых программам
   пользователя в триггерах
   Замечания по отладке триггеров

                          EГЛАВА 10.Компоненты SQL*FormsF
   Форматы хранения форм
   Компоненты SQL*Forms
   SQL*Forms,интерактивный построитель форм
   IAC,интерактивный преобразователь форм
   IAG,интерактивный генератор форм
   RUNFORM,Процессор форм

                      EПРИЛОЖЕНИЕ A.Сообщения об ошибкахF
                      EПРИЛОЖЕНИЕ B.Окна для разработки формF
   Путеводитель по окнам
   Окно CHOOSE BLOCK (выбрать блок)
   Окно CHOOSE FORM (выбрать форму)
   Окно CHOOSE TRIGGER (выбрать триггер)
   Окно COMMENTS (комментарии)
   Окно DEFAULTE BLOCK (блок по умолчанию)
   Окно DEFINE BLOCK (определить блок)
   Окно DEFINE FIELD (определить поле)
   Окно DEFINE FORM (определить форму)
   Окно DEFINE TRIGGER (определить триггер)
   Окно FILE (работа с файлами)
   Окно LIST BLOCK (список блоков)
   Окно LIST COLUMNS (список столбцов)
   Окно LIST FIELDS (список полей)
   Окно LIST FORMS (список форм)
   Окно LIST KEYS (список ключей)
   Окно LIST TABLES (список таблиц)
   Окно LIST TRIGGERS (список триггеров)
   Окно LIST TYPES (список типов триггеров)
   Окно SELECT COLUMNS (выбор столбцов)
   Окно SPECIFY ATTRIBUTES (определить атрибуты)
   Окно SPECIFY BLOCK OPTIONS
   (определить опции блока)
   Окно SPECIFY DEFAULT ORDERING
   (определить выбор записей по умолчанию)
   Окно SPECIFY RUN OPTIONS
   (определить опции выполнения)
   Окно SPECIFY VALIDATION
   (определить проверку данных)
   Окно TRIGGER STEP
   (шаг триггера)
   Окно TRIGGER STEP ATTRIBUTES
   (атрибуты шага триггера)

                    EПРИЛОЖЕНИЕ C.Подсоединяемые программыF
   Процесс написания подсоединяемых программ
   пользователя
   Замечания по написанию подсоединяемых программ
   Соглашения по передаче параметров
   Считывание и запись значений поля формы
   Вставка и корректировка строк таблицы
   Обнаружение и обработка ошибок
   Применение подсоединяемых программ

                     EПРИЛОЖЕНИЕ D.Техническая информацияF
   Правила наименования объектов
   Резервированные слова
   Схема упорядочения символов

                               EГлоссарийF

+                                EГЛАВА 1F
                                EВВЕДЕНИЕF
   SQL*Forms - это один из продуктов ORACLE,используемый для хранения,изме-
нения,выборки и обработки информации БД ORACLE.Как и следует из названия,
SQL*Forms позволяет взаимодействовать с БД с помощью электронных (экранных)
форм,которые напоминают бумажные формы.Эта глава представляет введение в
SQL*Forms и объясняет:
 * почему может возникнуть стремление использовать формы
 * на что похожа форма
 * основные понятия и терминологию
 * как формы отображают таблицы ORACLE
 * что можно делать с помощью SQL*Forms.

                     EДля чего используются формы?F
   С помощью SQL*Forms вы можете создать,а затем использовать формы для ра-
боты с информацией БД ORACLE.Поскольку существуют и другие способы работы с
данными,возможно,вас заинтересует,какими особенностями обладают формы.
   Рассмотрим " Спортивные Товары " - гипотетическую компанию по оптовой то-
рговле,- которая используется,как пример,в документе "SQL*Forms.Учебное по-
собие по разработке форм".Эта компания хранит информацию о своих клиентах и
заказах в нескольких таблицах ORACLE,включая три таблицы,описанные ниже:
 * ORDERS,таблица,содержащая общую информацию о каждом заказе
 * LINEITEMS,таблица,содержащая специфическую информацию о каждом заказе
 * CLIENT,таблица,содержащая информацию о каждом клиенте

                                Таблица ORDERS
   ORDERID     NUMBER   NOT NULL
   ORDERDATE    DATE
   SALESID     NUMBER   NOT NULL
   COMMPLAN     CHAR (1)
   CLIENTID     NUMBER   NOT NULL
   SHIPDATE     DATE
   ORDERTOT     NUMBER (8,2)
   MAXLINEITEM    NUMBER (3)

                              Таблица LINEITEMS
   ORDERID     NUMBER   NOT NULL
   ITEMNO     NUMBER   NOT NULL
   PRODID     CHAR (12)
   ACTUALPRICE    NUMBER (8,2)
   QTY      NUMBER
   ITEMTOT     NUMBER (8,2)

                                Таблица CLIENT
   CLIENTID     NUMBER   NOT NULL
   NAME      CHAR (40)
   ADDRESS     CHAR (40)
   CITY      CHAR (30)
   STATE     CHAR (2)
   ZIP      CHAR (9)
   AREA      NUMBER (3)
   PHONE     CHAR (9)
   CREDITLMT    NUMBER (9)

   Теперь предположим,что клиент,"Центр Подгонки Оборудования",помещает 2
заказа и меняет свой адрес.Без привлечения SQL*Forms оператор при вводе за-
каза должен использовать SQL*Plus и вводить команды SQL для того,чтобы поме-
стить информацию в БД.Ниже приведены необходимые команды:
   SQL> INSERT INTO ORDERS
   2  VALUES (303,'14-JUL-86',14,'B',106,
   3  '29-JUL-86',NULL,NULL);
   1 record created.

   SQL> INSERT INTO LINEITEMS
   2  VALUES (303,1,100890,58,3,174);
   1 record created.

   SQL> INSERT INTO LINEITEMS
   2  VALUES (303,2,100861,42,2, 84);
   1 record created.

   SQL> INSERT INTO LINEITEMS
   2  VALUES (303,3,100860,44,10,440);
   1 record created.

   SQL> UPDATE CLIENT
   2  SET  ADDRESS = '908 SEQUOIA',
   3     CITY = 'PALO ALTO',
   4     ZIP = '94301'
   5  WHERE  CLIENTID = 106;

   1 record updated.

   SQL> COMMIT
   commit complete

   Хотя вышеуказанные команды приводят к требуемому результату,процесс ввода
информации не защищен от синтаксических ошибок или ошибок в данных.Другими
словами,такой способ работы порождает возможность ошибок и нарушений целост-
ности БД.
   Решая же поставленную задачу с помощью SQL*Forms,вы можете создать форму,
показанную на рисунках 1-1 и 1-2.Она специально спроектирована так,чтобы бы-
ть похожей на бумажный бланк заказа.Вся информация непосредственно появляет-
ся на экране.Оператор может просто вводить и редактировать информацию в фор-
ме так,как будто он заполняет бумажный бланк.В этом случае ввода требуется
гораздо меньше и нет необходимости беспокоиться о синтаксисе или правильнос-
ти ключевых слов SQL.
   Дополнительно,в отличие от бумажного бланка,электронная форма обеспечива-
ет структурирование элементов данных.Например,форма ввода заказа может:
 * требовать,чтобы значения вводились в определенные поля
 * устанавливать максимальный размер кредита,который м.б. введен
 * показывать текущую дату и дату заказа
 * вычислять общее количество заказов автоматически
 * обеспечить актуальность информации,высвечиваемой в секциях CLIENT и
   LINEITEM
 * обеспечить наличие в списках таблицы CLIENT информации о каждом потреби-
   теле,который помещает заказ
 * контролировать снижение действительной цены,по сравнению с объявленной,не
   более,чем на 20%
 * генерировать последовательные номера заказов автоматически
 * выполнять множество других функций по проверке,оказанию помощи оператору
   и повышению комфортности его работы
    В заключение,заметим,что форма включает информацию из 3 таблиц одновре-
менно.Форма позволяет вам объединять отдельные таблицы в удобном виде.Работа
с данными таким способом более естественна и эффективна,чем работа с отдель-
ными таблицами.
   Суммируя сказанное,назовем 3 главных преимущества при работе с данными с
помощью форм:
    * удобство
    * сервис
    * интеграция информации

                           EЧто такое форма?F
   Форма - это определенное расположение информации на экране вашего терми-
нала.
   Информация может целиком помещаться на экране (странице) или разделяться
на несколько страниц.Форма ввода заказа на рисунке 1-2 состоит из 2 страниц.
   Информация подразделяется на секции или блоки.Вообще говоря,каждый блок
соответствует одной из базовых таблиц,связанных с формой.Форма ввода заказа
(в примере) имеет 3 блока,один для таблицы ORDERS,один для таблицы LINEITEMS
и один для таблицы CLIENT.
   Внутри блока запись отображает строку из базовой таблицы.Блоки с одиноч-
ной записью (моноблоки) такие,как ORDERS и CLIENT,отображают по одной строке
из базовой таблицы.Блоки с множественными записями (мультиблоки) отображают
несколько строк сразу,по одной на строке терминала.
   Аналогично пустым графам,в бланке внутри блока существуют поля,в которых
появляется информация.Поля используются для ввода-вывода и редактирования
данных.Каждое поле имеет фиксированный размер,местоположение и тип данных,
которые м.б. введены в это поле.В форме ввода заказа блок CLIENT содержит
девять полей от CLIENTID до CREDITLMT.
   Текст и графика - такие,как заголовки,метки полей,инструкции,линии и рам-
ки могут располагаться в любом месте формы.

                 EКак формы отображают таблицы ORACLEF
   Можно представлять себе блок как окно для просмота таблицы данных,а поле
как "окошечко",через которое можно видеть одно значение из таблицы.Когда вы
запрашиваете блок,каждая высвечиваемая запись представляет собой строку из
таблицы.При вводе,изменении или удалении записи блока,ваши действия соответ-
ственно вызывают вставку,корректировку или удаление строки таблицы.
   Не всегда существует взаимно-однозначное соответствие между столбцами та-
блицы и полями в блоке.С одной стороны,не все столбцы м.б.включены в блок.
Например,в таблице ORDERS столбец под именем MAXLINEITEM не включен в блок
ORDERS соответствующей формы.
   С другой стороны,блок может включать такие поля,которых нет в базовой та-
блице.Так,блок ORDERS содержит 4 поля под именами NAME,CHECKTOTAL,STATUS
CODE и STATUS MESSAGE,которые не соответствуют столбцам таблицы ORDERS.
   Эти поля служат для проверки,вычисления и вывода сообщений оператору.Нап-
ример,поле NAME показывает имя клиента при вводе оператором значения в поле
CLIENTID.Форма автоматически находит эту информацию в таблице CLIENT.Анало-
гично,значение CHECKTOTAL автоматически вычисляется с использованием других
полей формы и не соответствует какому-либо столбцу в таблице.

                  EЧто можно делать с помощью SQL*FormsF
   SQL*Forms позволяет делать 2 вещи:
   EРазработка формF С помощью SQL*Forms,вы можете расположить информацию
непосредственно на экране и модифицировать ее в диалоговом режиме до тех
пор,пока она не примет желаемый вид.Когда создание формы закончено,вы можете
сгенерировать файлы,необходимые для функционирования формы.
   EФункционирование формF После того,как форма построена,оператор может
использовать SQL*Forms для запуска формы и работы с информацией,к которой
форма имеет доступ.Эта фаза SQL*Forms описана в документе "SQL*Forms.Руково-
дство оператора".

                              EРазработка формыF
   Вы можете спроектировать форму простой или сложной,как пожелаете.У вас
есть полная свобода выбора блоков,расположения полей,выбора наличия необхо-
димой проверки и вспомогательной информации при вводе.
   Существует 3 уровня проектирования формы:
   EСоздание блоков и полейF Самый простой вид формы обеспечивает всего
лишь окно,через которое можно просматривать базовую таблицу,без какой-либо
специальной проверки или сервиса.Вы можете сами разместить поля или исполь-
зовать автоматическое расположение полей в блоке,которое SQL*Forms предлага-
ет по умолчанию.
   EОпределение блоков и полейF После того,как завершено создание схемы
для формы (расположение полей и.т.д.) вы можете продолжить ее разработку с
целью добавления базисной проверки и получения вспомогательной информации в
процессе функционирования.Например,с помощью одиночного ввода в окно SQL*
Forms вы можете определить допустимые интервалы для информации,вводимой в
поля,значения величин по умолчанию и вспомогательные сообщения.
   EОпределение триггеровF При высоком уровне овладения системой вы можете
обеспечить сложную проверку и обширную вспомогательную информацию с помощью
написания триггеров или последовательностей команд SQL и SQL*Forms.Триггеры,
(полностью описанные в главах 8 и 9 данного руководства) выполняются при на-
ступлении определенных событий или при нажатии определенных клавиш.
   Вы можете выбрать,где остановиться,- на первом уровне,уровне удовлетвори-
тельного функционирования формы,или пойти дальше по пути наращивания функций
на более высоких уровнях.

+                               EГЛАВАF E2F
                       EФункционирование SQL*FormsF
   В этой главе говорится о том,что вам необходимо знать для установки и за-
пуска SQL*Forms на вашем компьютере.Она содержит необходимые сведения по:
 * установке SQL*Forms
 * запуску SQL*Forms
 * регистрации в системе
 * опциям окна CHOOSE FORM
 * окончанию сеанса работы с SQL*Forms.

                                 EУстановкаF
   В этой части говорится о том,что вы должны сделать перед запуском SQL*
Forms.Вам будет необходимо выполнить данный этап только один раз.

                 EЧто вам необходимо для запуска SQL*FormsF
   Для использования SQL*Forms на вашем компьютере м.б. установлен ORACLE
RDBMS.Технические средства,необходимые для запуска этой версии SQL*Forms
вместе с требующимся программным обеспечением описаны в вашем руководстве по
установке и использованию ORACLE ( ORACLE Installation and User`s Guide ).

                           EУстановка (инсталляция)F
   Процедура по установке SQL*Forms осуществляет копирование программ и де-
монстрационных файлов с программных дисков или магнитных лент на жесткий ди-
ск вашего компьютера.
   В многопользовательских системах установка обычно проводится администра-
тором БД (DBA).Если у вас однопользовательская система,или вы являетесь DBA,
ответственным за многопользовательскую установку,смотрите установочные инст-
рукции для вашей системы в руководстве по установке и использованию ORACLE.
Не забудте,что устанавливать нужно как ORACLE,так и SQL*Forms; для этого ну-
жно провести 2 отдельных установки.
   Когда вы будете выполнять программу ,устанавливающую SQL*Forms,она запро-
сит у вас все необходимые сведения для установки SQL*Forms на вашем компью-
тере.Отвечайте на эти вопросы и следуйте инструкциям,появляющимся на экране.

                        EЗадание регистрационного счетаF
   Для того,чтобы использовать ORACLE RBDMS,вы должны иметь регистрационный
счет.Для использования вами ORACLE в многопользовательской системе админист-
ратор БД (DBA) назначает вам регистрационный идентификатор и пароль.
   Если у вас однопользовательская система,вы будете определять регистрацио-
нный идентификатор во время установочной процедуры.Для установки других ре-
гистрационных счетов следуйте инструкции в " Руководстве администратора БД
ORACLE".
   Пока ваш счет не установлен,вы можете использовать ORACLE через идентифи-
катор SCOTT и пароль TIGER.

            EПостроение и удаление таблиц и форм по образцуF
   Если вы хотите воспользоваться какими-либо примерами из этой книги (в со-
бственных целях),вы должны следовать шагам упражнения I-1 во введении к
"SQL*Forms.Учебное пособие разработчикам",чтобы создать собственные копии
таблиц БД и форм.Эти примеры также содержат инструкции для удаления таблиц и
форм,когда они вам не нужны.

                             EНазначения клавишF
   Кроме непосредственного набора данных в процессе функционирования SQL*
Forms вы будете использовать определенные клавиши на вашей клавиатуре для
выполнения опpеделенных операций,таких,как передвижение курсора и выбор эле-
ментов из списка.Такие клавиши называются функциональными,потому что они вы-
полняют функции SQL*Forms.Эти функциональные клавиши,используемые при созда-
нии форм,перечисленны и описаны в главе 3 этой книги.
   Поскольку клавиатуры бывают разных типов,в этой книге для обозначения фу-
нкциональных клавиш мы используем имена функций (например,[Accept] и [Sele-
ct]).Для выяснения,какие клавиши каким функциям соответствуют,необходимо ис-
пользовать карту клавиатуры.
   Имеется несколько путей для получения карты клавиатуры:
 * от вашего администратора БД
 * из главы по SQL*Forms в документе "ORACLE.Руководство по установке и ис-
   пользованию".
 * во время работы SQL*Forms после нажатия [Show Function Keys] ( см.гл.3 ).
   Существует 2 карты клавиатуры для каждой системы - одна для создания фо-
рм,другая для их выполнения.Не забывайте использовать подходящую для нужного
этапа карту.В данной книге вы будете использовать карту для разработки форм.
Когда вы будете тестировать созданную вами форму,будет использоваться карта
оператора.

                              EЗапуск SQL*FormsF
   Убедитесь,что ORACLE и SQL*Forms установлены на вашем компьютере.
 1.Если ORACLE RDBMS ранее не был запущен,проконсультируйтесь с вашим DBA.
    В однопользовательских системах,как и на персональном компьютере,вы за-
    пустите БД,набрав: " ORACLE ".
 2.(необязательно) Используйте соответствующие команды ОС для изменения ка-
   толога,из которого вы хотите запустить SQL*Forms.Это директорий,в котором
   будут храниться любые созданные вами файлы.
 3.Наберите SQLFORMS и нажмите [Enter].
     В этот момент вы увидете регистрационный экран SQL*Forms.
 4.В поле Username (имя пользователя) впишите ваш регистрационный счет и на-
   жмите [Next Field].
   Если вы ошиблись,используйте [Delete Backward] для исправления ошибки и
   повторите ввод.
 5.В поле Password введите ваш пароль и нажмите [Accept].
    В целях защиты от несанкционированного доступа пароль не высвечивается
    на экране.
    Через некоторое время вы увидете окно CHOOSE FORM.
       Если SQL*Forms стартовал неудачно,вы увидете сообщения,которые помо-
гут вам устранить проблему.Если вы получите сообщения,относящиеся к SQL*
Forms,то нажмите [Display Error] или посмотрите объяснение в EПриложении АF.
В противном случае смотрите руководство по вашей ОС для получения информации
о сообщениях ОС.Если никаких сообщений не высвечивается,обратитесь за помо-
щью к руководству по вашей ОС.

                            EОкно CHOOSE FORMF
   Окно CHOOSE FORM,показанное на рисунке 2-2,служит в качестве главного ме-
ню,из которого вы можете запустить основные операции SQL*Forms.В верхней ча-
сти окна находится прямоугольник,в котором вы можете ввести имя формы,с ко-
торой хотите работать.Ниже находятся восемь опций,из которых вы можете выб-
рать операцию для выполнения ее над той формой,которую вы указали.

   Термин    Действие
   ___________________________________________________________
   CREATE    Создать новую форму.
   MODIFY    Изменить существующую форму.
   LIST      Распечатать на экране список существующих форм.
   RUN       Протестировать или выполнить форму.
   DEFINE    Изменить имя формы или определить тригеры уровня формы.
   LOAD      Загрузить форму,созданную с помощью другой версии или инсталля-
             ции SQL*Forms.
   FILE      Сохранить или отменить произведенные в форме изменения.
   GENERATE  Создать выполнимый файл,необходимый для запуска формы.

   Все эти действия подробно описаны в данном руководстве.Окно CHOOSE FORM и
все остальные окна SQL*Forms представлены в EПриложении ВF.

                            EВыход из SQL*FormsF
   Когда вы заканчиваете работу с SQL*Forms и хотите выйти из программы,на-
жимайте [Accept] или [Exit/Cancel] до тех пор,пока снова не увидите окно
CHOOSE FORM.Затем нажмите [Accept] для выхода.Через некоторое время вы уви-
дите подсказку ОС.
   Если вы еще не сохранили ваши изменения,то после нажатия [Accept] вы по-
падете в окно FILE.Выберите одно из его действий,чтобы сохранить или отмени-
ть текущую форму и вернитесь в окно CHOOSE FORM.Затем снова нажмите [Accept]
для выхода.

+                             EГЛАВАF E3F
                       EИспользование SQL*FormsF
   В этой главе рассматривается механика использования SQL*Forms для разра-
ботки форм.Она включает:
 * описание клавиш,используемых для разработки форм
 * размещение экрана
 * получение помощи
 * сообщения об ошибках
 * описание процесса выборки из окон
 * описание вывода на печать содержимого экрана.
   В этой главе подразумевается,что вами уже была прочитана глава 2 "Функци-
онирование SQL*Forms",в которой рассматривался запуск SQL*Forms,регистрация
в нем и выход из него.

                                EКлавиатураF
   Поскольку клавиатуры отличаются друг от друга,в этой книге клавиши SQL*
Forms обозначаются именами функций,которые они выполняют.Фактическая клави-
ша,которую вы нажимаете для выполнения функции,зависит от конкретной клавиа-
туры.
   Например,одна из часто используемых клавиш называется [Accept].Чтобы вы-
полнить функцию [Accept],на терминале vt100 необходимо нажать клавишу [PF3],
а на терминале VT220 - клавишу [DO].Перед запуском SQL*Forms необходимо по-
лучить карту клавиатуры от своего администратора БД или взять ее из "Руково-
дства по установке и использованию ORACLE".
   В таблице 3-1 показаны клавиши,ипользующиеся при разработке формы.Для
удобства клавиши разделены на три группы :
 * клавиши,используемые во время работы программы
 * клавиши,используемые в окнах SQL*Forms (описанных далее в этой главе)
 * клавиши,используемые в экранном построителе форм (описанном в главе 5).
   Заметьте,что функциональные клавиши,используемые при разработке формы,от-
личаются от клавиш,используемых при выполнении этой формы,описанных в "SQL*
Forms.Руководство оператора".Если вы желаете,вы можете использовать утиллиту
CRT для создания или изменения карты клавиатуры.Для получения подробной ин-
формации смотрите также "Руководство администратора БД".

                                 ТАБЛИЦА 3-1.
                   EКлавиши,используемые в SQL*FormsF
                           EОсновные клавишиF
   Функциональная клавиша Описание
   ----------------------------------------------------------Д
   [Left]             Перемещает курсор влево на 1 символ.
   [Right]            Перемещает курсор на 1 символ вправо.
   [Up]               Перемещает курсор на 1 строку вверх.
   [Down]             Перемещает курсор на 1 строку вниз.
   [Insert/Replace]   Производит переключение между режимами вставки и заме-
                      ны.В режиме вставки над курсором вводятся новые симво-
                      лы,располагающиеся перед уже существующими здесь сим-
                      волами.В режиме замены вновь введенные символы заменя-
                      ют уже существующие,располагаясь на их месте.
 [Delete Character]   Удаляет символ,расположенный над курсором; следующие
                      за ним символы сдвигаются влево,чтобы заполнить пробел.
 [Delete Backward]    Удаляет символ,находящийся левее от курсора; следующие
                      за ним символы сдвигаются влево,чтобы заполнить про-
                      бел.Однако,по этой команде не м.б. удалены символы,на-
                      ходящиеся за пределами поля.
   [Next Field]       Перемещает курсор к следующему элементу или полю в те-
                      кущем окне или блоке,просматривая их в английском по-
                      рядке чтения.От последнего элемента или поля осуществ-
                      ляется циклический возврат на начало.
   [Previous Field]   Перемещает курсор к предыдущему полю,или полю в теку-
                      щем окне или блоке.От первого элемента или поля проис-
                      ходит циклический возврат к последнему.
   [Print Screen]     Печатает содержимое текущего экрана или копирует его в
                      файл.
  [Redisplay Screen]  Стирает и восстанавливает текущее содержимое экрана,
                      если экран "засорен" сообщениями ОС или беспорядочными
                      символами,полученными от ошибок передачи данных.
[Show Function Keys]  Высвечивает карту клавиатуры для вашего терминала.Для
                      продолжения работы нажмите любую клавишу.
   [Accept]           Заканчивает сеанс работы с текущим окном,сохраняя все
                      изменения и осуществляет переход к следующему окну или
                      шагу.
   [Clear Field]      Удаляет содержимое текущего поля от курсора до конца
                      элемента.Для удаления оставшегося содержимого поля
                      снова нажмите клавишу [Clear Field].
   [Exit/Cancel]      Заканчивает сеанс работы с текущим окном,отменяя все
                      изменения и осуществляет возврат к предыдущему окну
                      или шагу.(Изменения,сделанные в другом окне не отменя-
                      ются,даже если оно было вызвано из текущего).
 [Run-Options Window] Высвечивает окно SPECIFY RUN OPTIONS,где можно выбрать
                      параметры выполнения формы.
   [Select]           Выбирает элемент окна отмеченный курсором.Если этот
                      элемент :
                      - является действием,[Select] выполняет его;
                      - является ссылкой на другое окно,[Select] высвечивает
                        его;
                      - является ключом,который м.б. либо выбран,либо исклю-
                        чен,[Select] отменяет текущую установку;
                      - содержится в списке форм,блоков или других вариантах
                        выбора,[Select] выделяет его.Нажмите клавишу [Acce-
                        pt] для того,чтобы скопировать его в связанное поле.

           EКлавиши,используемые в экранном построителе формF
   Функциональная клавиша                 Описание
   ----------------------------------------------------------Д
   [Accept]         Заканчивает сеанс работы с экранным построителем форм,
                    сохраняя все изменения и производит возврат к окну
                    CHOOSE BLOCK.
   [Create Field]   Создает новое поле (после того,как отмечено его положе-
                    ние двойным нажатием клавиши [Select]).
   [Cut]            Удаляет поле (после того,как оно отмечено нажатием кла-
                    виши [Select]) или область (после того,как она отмечена
                    двойным нажатием клавиши [Select]) из формы и временно
                    сохраняет их в памяти.Они м.б. восстановлены по команде
                    [Undo],скопированы или перемещены с помощью [Paste].
   [Define]         Определяет параметры поля,в котором находится курсор,или
                    блока,отмеченного с помощью [Select Block].
  [Draw Box/Line]   Рисует рамку или линию (после того,как отмечено их поло-
                    жение двойным нажатием клавиши [Select] или после нажа-
                    тия клавиши [Select Block] для указания целой страницы).
    [Exit/Cancel]   Заканчивает сеанс работы с экранным построителем форм,
                    сохраняя все изменения и производит возврат к окну
                    CHOOSE BLOCK.(В экранном построителе форм [Exit/Cancel]
                    действует также,как и команда [Accept].Для отмены изме-
                    нений не сохраняйте исправленную форму).
   [Paste]          Копирует последнее удаленное посредством [Cut] поле или
                    область,в место нахождения курсора,сохраняя всю информа-
                    цию,за исключением порядковых номеров.
   [Resize Field]   Увеличивает или уменьшает ширину вывода поля до позиции
                    курсора (после того,как поле отмечено нажатием клавиши
                    [Select]).
   [Select]         Помечает поле,линию,рамку или область для создания,уда-
                    ления,копирования или взятия в карман.Для отмены выбора
                    используется клавиша [Undo].
   [Seleсt Block]   Выбирает текущий блок для определения или текущую стра-
                    ницу для заключения в рамку.
   [Undo]           Отменяет последние действия клавиш [Select],[Select
                    Block],[Create Field],[Resize Field],[Draw Box/Line],
                    [Cut] или [Paste].Повторяющееся нажатие клавиши [Undo]
                    отменяет выполненные ранее операции.

                                 EЭкранF
   По рисунку 3-1 вы можете проследить порядок разработки формы на экране.
Размещение информации типично для большинства экранов SQL*Forms.
   Когда вы работаете непосредственно с формой,она появляется в главной об-
ласти экрана.Эта область м.б. перекрыта окнами,которые содержат почти все
варианты выбора SQL*Forms.Например,окно SPECIFY ATTRIBUTES на рис.3-1 позво-
ляет вам выбрать характеристики поля формы.Это окно появляется тогда,когда
вы перед этим выбираете атрибуты из окна DEFINE FIELD.О том,как осуществить
выбор в окнах,вы узнаете позднее в этой главе.
   В нижней части экрана расположена строка состояния.Она содержит информа-
цию о том,:
 * с какой формой,блоком или страницей вы работаете в настоящий момент;
 * сколько раз подряд вы нажимали клавишу [Select] или,выбрали ли вы блок ;
 * будут ли вводимые вами символы вставляться над курсором или замещать уже
   существующие.

                            EРаспечатка экранаF
   При разрабтке формы вам может понадобиться сохранить или распечатать ко-
пию содержимого конкретного экрана.Для того,чтобы распечатать или скопирова-
ть содержимое текущего экрана,необходимо нажать клавишу [Print].В нижней ча-
сти экрана появится запись:
                            PRINT SCREEN:  FILE NAME: SCREEN.LIS PRINTER
 * Для того ,чтобы содержимое экрана вывести на печать,поместите курсор на
   PRINTER и нажмите клавишу [Select].
 * Чтобы сохранить содержимое экрана в файле,оставьте имя файла по умолчанию
   (SCREEN.LIS) или измените его.Затем нажмите клавишу [Accept].
      В зависимости от вашего выбора SQL*Forms распечатает или сохранит в
файл содержимое экрана и вернет вас к тому,что вы делали ранее.Для отмены
выполнения печати содержимого экрана нажмите клавишу [Exit/Cancel] - для во-
зврата без осуществления выборки.

                            EПолучение помощиF
   Во время выполнения SQL*Forms в любой момент вы можете нажать клавишу
[Show Function Keys],после чего на экране появляется список специальных кла-
виш вместе с их назначениями для клавиатуры вашей системы,описаными ранее в
данной главе в разделе "Клавиатура".
   Нажмите [Accept] или [Exit/Cancel] для возврата к текущей работе.

                           EСообщения об ошибкахF
   Когда случается нечто непредвиденное или же,если вы нажали клавишу,кото-
рую SQL*Forms не может интерпретировать,в нижней части экрана появляется со-
общение об ошибке.При последующем нажатии любой клавиши происходит удаление
сообщения и выполнение функции этой клавиши.

                                  EОкнаF
   В SQL*Forms окна организованы в иерархические древовидные структуры.Таким
образом,при осуществлении выбора из одного окна обычно высвечивается подокно
с дополнительными вариантами выбора.По окончании выполнения выборов возврат
осуществляется через те же подокна в обратном порядке.
   Например,при запуске SQL*Forms появляется окно CHOOSE FORM,изображенное
на рисунке 3-3.При выборе опции LIST высвечивается окно LIST FORMS,показан-
ное на рисунке 3-4.При нажатии клавиши [Run-Options Window] высвечивается
окно SPECIFY RUN OPTIONS ,изображенное на рис.3-5.

                                EКомпонентыF
   На рисунках 3-3,3-4 и 3-5 изображены 4 основных типа элементов,которые
могут содержаться в окнах.Это:
 * Области ввода,позволяющие записывать значения выбора.В окне CHOOSE FORM
   находится одна область ввода с именем NAME.
 * Действия,позволяющие выбирать операции для выполнения,например,создание
   новой формы или высвечивание другого окна.В окне CHOOSE FORM имеется 8
   действий (от CREATE до GENERATE).
 * Списки,позволяющие выбирать один из ряда взаимоисключающих элементов вво-
   да.Например,вы можете выбрать одну форму из окна LIST FORMS для корректи-
   ровки,выполнения или генерации.
 * Ключи ,позволяющие выбирать (разрешать или включать) или исключать (зап-
   рещать или выключать) любое число элементов.В окне SPECIFY RUN OPTIONS
   вы можете выбирать любое число элементов,начиная с опции "Buffer records
   with file" и заканчивая "Debug mode".Ключи имеются также и в окне
   SPECIFY ATTRIBUTES ,изображенном на рисунке 3-1.
     При выборе ключ помечается звездочкой и,возможно,изменением яркости эк-
рана.

                          EПеремещение по экрануF
   Клавиши [Up],[Down],[Left] и [Right] перемещают курсор соответственно
вверх,вниз,влево и вправо.Для движения курсора нет ограничений; вы можете
перемещать его даже за пределы окна.Однако,для выбора элемента необходимо
установить курсор на этот элемент или непосредственно слева от него перед
тем,как нажать клавишу [Select].
   При нажатии клавиши [Next Field] курсор перемещается к следующему элемен-
ту в окне и от последнего осуществляет возврат к первому.Нажатие клавиши
[Previous Field],подобно этому перемещает курсор,но к предыдущему элементу
окна и производит переход от первого к последнему.

                EНабор и редактирование вводимой информацииF
   Когда курсор находится в области ввода окна,можно просто набрать вводимую
информацию.Символы будут появляться над курсором.
   Вводимую информацию можно также отредактировать,нажимая:
 * клавиши [Left] и [Right] для перемещения кусора по строке вводимой инфор-
   мации
 * клавишу [Delete Character] для удаления символа над курсором
 * клавишу [Delete Backward] для удаления символа,стоящего слева от курсора
 * клавишу [Insert/Replace] для переключения между режимами вставки и замены
   символов
 * клавишу [Clear Field] для удаления содержимого от позиции курсора до кон-
   ца вводимой информации.При повторном нажатии удаляется остаток.
      Эти же самые клавиши оператор может использовать для редактирования
поля во время выполнения формы.

                         EОсуществление выбораF
   Для выбора элемента окна необходимо поместить курсор на элемент или непо-
средственно перед ним и нажать клавишу [Select].Это говорит системе,что вы
осуществили выбор элемента или,что вы хотите выполнить действие,представлен-
ное этим элементом.
   Результаты выбора элемента окна зависят от типа элемента.
 * Если элемент является действием,команда [Select] побуждает SQL*Forms вы-
   полнить его.
 * Если элемент находится в списке,команда [Select] выделяет его.Затем,по
   команде [Accept] он копируется в связанную с ним область ввода.Например,
   в окне LIST FORMS по команде [Select] помеченная форма выделяется и по
   команде [Accept] копируется в область ввода NAME окна CHOOSE FORM.
 * Если элемент является ключом,то команда [Select] переключает его установ-
   ку - выбирая его,если он не был выбран и наоборот.

                          EПередвижения по окнамF
   Выбор в окне элемента действия вызывает,как правило,непосредственный пе-
реход к следующему шагу.В некоторых случаях окно исчезает с экрана; в оста-
льных случаях его будет перекрывать другое окно.
   Если вы закончили работу с окном и хотите вернуться к предыдущему окну,
это можно сделать двумя способами:
 * нажать клавишу [Accept] для сохранения выборов,сделанных в окне;
 * нажать клавишу [Exit/Cancel] для отмены сделанных выборов.
      При использовании клавиши [Accept] или [Exit/Cancel] для выхода из ок-
на,данное окно исчезнет с экрана.В большинстве случаев происходит возврат в
окно или к задаче,из которых было вызвано окно,находящееся левее от текуще-
го.В EПриложении ВF детально показано,что происходит,когда вы покидаете
каждое из окон SQL*Forms.

                      +         EГЛАВАF E4F
                        EПроцесс Разработки ФормыF
   Теперь,когда вы знаете механизм использования SQL*Forms,эта глава объяс-
нит вам,как применить его в процессе разработки формы.В ней описаны различ-
ные операции,которые вы можете производить с помощью SQL*Forms,и их взаимо-
действие.В данной главе дается краткий обзор процессов :
 * планирования формы
 * создания формы
 * модификации формы
 * тестирования формы
 * сопровождения формы
 * блокирования таблиц и записей
 * адаптации формы для видеотерминалов.
   Не забывайте,что эта глава представляет собой краткий обзор.Главы 5-9
предоставляют детальное описание отдельных операций,в то время как
EПриложение ВF включает в себя подробную информацию по каждому из окон,ко-
торые здесь будут упоминаться.

                   EТермины "создать" и "определить"F
   В SQL*Forms - и во всем этом руководстве - термины "создать" и "определи-
ть" имеют различные значения :
 * Создать объект означает сделать его существующим.Например,вы создаете
   блок,выбирая CREATE или DEFAULT из окна CHOOSE BLOCK.
 * Например,вы определяете блок,делая его текущим блоком,и затем нажимая
   [Select Block] и [Define] для отображения окна DEFINE BLOCK.

                           EПланирование формыF
   Хотя SQL*Forms позволяет вам разрабатывать формы "на ходу"
 - создавая макет и затем модифицируя его прямо на экране
 - повысить эффективность данного процесса можно с помощью предварительного
   планирования.
     Наилучшим путем создания плана формы является определение вначале хара-
ктерных свойств формы,т.е.: какие таблицы будут использоваться и какие блоки
будут представлены.Затем развиваются более специфичные свойства; такие,как
размещение,представление и определение полей.
   В дальнейшем вы убедитесь,что ваш процесс разработки станет быстрее и эф-
фективнее,если использовать словарь разработчика SQL (SQL*Design Dictiona-
ry).Этот инструмент разработки машинно-ориентированных систем может автома-
тически генерировать описания таблиц и документировать важные характеристики
вашей таблицы и процесса разработки программного обеспечения.
   Планирование формы - это субъективный и индивидуальный процесс.Вы можете
следовать описанной здесь процедуре или же модифицировать ее в соответствии
со своими нуждами.

                             EНазначение формыF
   Напишите краткое изложение назначения вашей формы.Например,вы можете за-
хотеть,чтобы вашей формой было нетрудно пользоваться торговым работникам для
ввода и поиска заказов на спортивные товары,проданные вашей компанией.
   Определите все то,что следует из назначения вашей формы для различных
способов ее использования,например,типы проверок данных и контроля соответс-
твия,необходимые для обеспечения целостности информации в БД.Например,вы мо-
жете указать,что номера заказчиков из таблицы заказов м.б. определены и в
таблице заказчиков.
   На этом этапе не стоит уделять большого внимания техническим деталям; со-
средоточьте внимание на результате работы формы.Это предохранит вас от пос-
тоянных корректировок вашего плана по мере все большего понимания задачи.Ут-
верждение,что значение,введенное в ORDER.CLIENTID,должно соответствовать те-
кущему содержимому CUSTOMER.CLIENTID,на данном этапе будет излишней подроб-
ностью.

                               EВыбор таблицF
   Выберите базовые таблицы,которые будут связаны с формой.Например,форма
заказов должна строится по 3-х таблицам :
 одна - с общей информацией о заказах;
 вторая - с информацией о каждом элементе заказа и
 третья - с информацией о заказчиках или клиентах (см.рис.4-1).
   Если эти таблицы уже существуют в вашей организации,мы рекомендуем сдела-
ть копии,чтобы вы могли проверять (отлаживать) свою форму,не затрагивая реа-
льные данные.Если таблицы еще не созданы,создайте модели таблиц и наборов
данных для выполнения проверок.
   Форма м.б. связана с экранными формами таким же образом,как и с таблица-
ми.Помните,однако,что некоторые экранные формы имеют ограничения на вставку
и изменение строк.Для получения более подробной информации см."SQL*Plus.Ру-
ководство пользователя".

                            EКомпоновка формыF
   Определите,какой блок в форме будет представлять каждую таблицу.Каждый
блок может содержать поля,взятые не более,чем из одной таблицы (управляющий
блок содержит поля,не принадлежащие ни одной таблице).Однако,вы можете испо-
льзовать триггеры для получения доступа из блока к другим таблицам.
   Хотя вы можете распределить поля одной таблицы в любом количестве блоков,
формой обычно легче пользоваться,если каждая таблица ассоциируется с одним
блоком.
   Решите,какие поля будут появляться в каждом блоке формы.Поля могут предс-
тавлять столбцы из соответствующей таблицы или м.б. вычислены по значениям
других полей формы.
   Затем определите последовательность,в которой курсор будет переходить от
блока к блоку и от поля к полю,когда оператор нажимает [Next Block] и [Next
Field] соответственно.Последовательность имеет значение для оператора.Напри-
мер,если оператор вводит информацию с бумажной формы,используйте ту последо-
вательность,в которой она (информация) представлена там (на бумаге).Если
оператор получает информацию по телефону,используйте последовательность,в
которой он обычно запрашивает информацию или в которой говорящий обычно пе-
редает ее.
   Теперь вы готовы набросать эскиз размещения блоков в форме и полей в каж-
дом блоке,как показано на рис.4-1.Вы можете разместить каждый блок на отде-
льной странице экранного вывода или разместить несколько блоков на одной и
той же странице.Имейте в виду следующие принципы :
 * Лучше всего хранить каждый блок на отдельной странице,так как это миними-
   зирует переделки,касающиеся как работы компьютера,так и работы оператора.
 * Все блоки и поля на странице м.б. связаны с одной задачей.
 * Если программа требует,чтобы оператор,вводя значение одного поля,ссылался
   на другое,эти 2 поля должны находиться на одной странице.
 * Слишком большое количество информации на одной странице затрудняет чте-
   ние.Чтобы помочь оператору,оставляйте свободное пространство.
   Ъ--------------------------------------------------------Дї
   і   Ъ----------------------------------------Дї           і
   і   і ------------ CLIENTS ------             і           і
   і   і              CLIENTID ________          і           і
   і   і             NAME _____________________  і           і
   і   і          ADDRESS _____________________  і           і
   і   і             CITY _____________________  і           і
   і   і             STATE __________  ZIP _____ і           і
   і   і                                         і           і
   і Ъ----------------------------------------------Дї     і і
   і і Ъ-------------- ORDERS ----------------Дї     і     і і
   і і і ORDERID _______  ORDERDATE _____      і     і     і і
   і і і SALESID _______  COMMPLAN _____       і     і     і і
   і і і CLIENTID ______ NAME ____             і     і     і і
   і і і ORDERTOT ______  SHIPDATE _____       і     і  --ДЩ і
   і і і      MAXLINEITEM _____                і     і       і
   і і А--------------------------------------ДЩ     і       і
   і і                                               і       і
   і і ------------Д LINEITEMS ----------------Д     і       і
   і і ORD ITEM PRODUCT  STD ACTUAL QTY ITEM         і       і
   і і ID NO DESCRIPTION PRICE PRICE  TOT            і       і
   і і ___ ____ ___________ _____ ______ ___ ____    і       і
   і і ___ ____ ___________ _____ ______ ___ ____    і       і
   і і ___ ____ ___________ _____ ______ ___ ____    і       і
   і і ___ ____ ___________ _____ ______ ___ ____    і       і
   і А----------------------------------------------ДЩ       і
   А--------------------------------------------------------ДЩ
      Рис.4-1.Планирование формы

   Расположите поля на экране в логическом порядке: или слева-направо,свер-
ху-вниз (английский порядок чтения),или сверху-вниз,слева-направо (подобно
списку из нескольких столбцов).Оставьте на каждой странице место для конс-
тантного текста,такого,как имена полей,инструкции,рамки вокруг блоков и т.п.
И не забудьте оставить пустое место для строки сообщений и строки состояния
(обычно последние 2 строки на экране),так как они будут использоваться самим
SQL*Forms.
   Нет необходимости все планировать на бумаге; вы обнаружите,что удобно на-
бросать черновик формы,а затем завершить разработку во время диалога с SQL*
Forms.Клавиши [Cut] и [Paste] позволяют легко делать исправления во время
работы.Однако,до начала ввода формы нужно решить,какие поля на каких страни-
цах будут располагаться.Вам,вероятно,захочется проводить планирование более
тщательно,когда вы изучите SQL*Forms и возьметесь за решение сложных задач.

                         EКонстантный текстF
   После того,как вы разместите поля и скорректируете их на экране,введите
константный текст (иногда называемый шаблоном,маской),чтобы сделать форму
более понятной для оператора.Константный текст включает в себя :
 * Имена полей,которые имеют определенное значение для оператора.Иногда вы
   можете захотеть,чтобы имя поля не появлялось на экране; если возникнет
   необходимость,оператор всегда сможет отобразить его,используя [Help].
 * Поясняющие заголовки блока,таблицы и формы.
 * Линии,рамки и другую графику для организации формы (установка границ) и
   привлечения внимания.Избегайте,тем не менее,их частого использования.
 * Инструкции и советы по использованию формы,позволяющие решить возможные
   проблемы (которые могут возникнуть в процессе работы оператора).

                          EУточнение логикиF
   Следующим шагом является определение того,как форма будет проверять пра-
вильность ввода,производимого оператором,и отвечать на него.Фактически вы
начинаете этот процесс,когда впервые задумываетесь о назначении формы.Сейчас
самое время сформулировать все это в терминах операций над таблицами и бло-
ками,с которыми работает форма.Это обычно влечет за собой выбор атрибутов
полей или определение триггеров.
   Здесь приведены для рассмотрения некоторые типы логических проверок :
 * каким образом значения некоторых полей зависят или вычисляются с помощью
   других полей (например,чтобы согласовать блоки,номера заказов для блока
   LINEITEMS м.б. скопированы из полей "номер заказа" блока ORDERS)
 * каким образом значения полей зависят от БД (описание партии в блоке
   LINEITEMS д.б. произведено из БД при помощи номеров партии из таблицы то-
   варов)
 * как проверяются значения отдельных полей (количество заказанного никогда
   не м.б. меньше нуля)
 * как значения полей контролируются по значениям других полей (дата реали-
   зации заказа никогда не м.б. более ранней,чем дата его внесения)
 * как значения полей проверяются по БД (поле с номером заказчика должно су-
   ществовать в таблице заказчиков)
 * каким образом и где именно переопределяются или делаются недоступными фу-
   нкциональные клавиши (чтобы запретить оператору удаление записей для за-
   казчиков,клавиша [Delete Record] д.б. недоступной в блоке CLIENTS).
      Существуют различные варианты логики использования записей в различных
блоках,и даже записей в одном блоке во время выполнения различных операций.
Например,[Delete Record] м.б. недоступно в блоке CLIENTS,но не в блоках
ORDERS и LINEITEMS.Вы м.б. уверены,что рассмотрели все варианты,которые ло-
гически отличаются друг от друга.
   Каким же образом форма проверяет правильность ввода,реагирует на ошибки и
поддерживает совместимость по контексту?.. Например,вы можете захотеть,чтобы
порядок ввода данных с помощью формы был следующий :
 * Предотвратить удаление записи по потребителю,если в таблице заказов соде-
   ржится заказ от этого потребителя.Форма могла бы отреагировать на такую
   попытку,проинформировав оператора о том,что заказ м.б. заполнен или уда-
   лен,и пока этого не произойдет,в удалении записи по заказчику будет отка-
   зано.
 * Предотвратить удаление записи по заказу,если в таблице LINEITEMS содержа-
   тся записи для того же заказа.Форма должна отреагировать на такую попыт-
   ку,запросив подтверждение оператора на удаление заказа,удаляя в случае
   положительного все записи по этому заказу из таблицы ORDERS (заказы) и из
   таблицы LINEITEMS (позиция заказа).
 * Предотвратить ввод элементов строк с номером заказа,не найденным в табли-
   це заказов.Т.е. форма могла бы потребовать,что заказ должен появиться в
   блоке ORDERS до того,как оператор сможет попасть в блок LINEITEMS.
 * Гарантировать,что,когда заказ заполнен,"ручные" расчеты в таблице инвен-
   таризации будут производиться автоматически.

                          EПроверка соответствияF
   Одним из общих типов проверки соответствия является проверка на уникаль-
ность,гарантирующая отсутствие строк в таблице,имеющих одинаковые идентифи-
каторы заказов,коды заказчика или другие идентификаторы.Имеется 2 способа,
обеспечивающих уникальность :
 * использовать окно SPECIFY ATTRIBUTES,чтобы включить идентифицируемые поля
   в первичный ключ блока,затем воспользоваться окном SPECIFY BLOCK OPTIONS,
   чтобы подтвердить то,что значения ключа являются уникальными (смотри гла-
   вы 6-7); или
 * использовать команду SQL CREATE INDEX для создания UNIQUE-индекса на тре-
   буемых столбцах таблицы (см."SQL*Plus.Руководство пользователя").
      Индексный метод,вообще говоря,предпочтительнее,потому что он более эф-
фективен,гибок и надежен.Например,индекс будет поддерживать уникальность для
строк,вставляемых с помощью SQL*Plus,Easy*SQL и другого программного обеспе-
чения ORACLE,тогда как первичный ключ связан только с текущей формой.

                           EУправляющие блокиF
   Управляющий блок - это блок,который не привязан ни к какой таблице БД.
Значения полей управляющего блока могут вводиться оператором или вычисляться
триггерами по значениям других полей или значениям из БД.
   Вы можете использовать управляющие блоки для достижения различных целей,
включая следующие :
 * создание системы меню,в которых варианты выбора представлены в качестве
   константного текста.Когда оператор вводит в поле выбранное значение,триг-
   гер выполняет одно или несколько действий,в зависсимости от того,что было
   введено.
 * создание экранов подсказки,в которых инструкции или другая полезная инфо-
   рмация представлены в виде константного текста.Отдельное поле блока м.б.
   помечено как "Нажмите [Next Field] для возврата в форму",при этом триггер
   отреагирует соответствующим образом.
 * временное сохранение областей,которые,например,содержат значения,введен-
   ные для одной записи,в то время как форма обрабатывает следующую запись.
      Если ваша форма будет содержать управляющие блоки,кратко опишите функ-
ции каждого блока.Решите,какие поля будет содержать каждый управляющий блок,
каким образом будут получаться их значения и как они будут в дальнейшем ис-
пользоваться.

                           EСоздание формыF
   Спланировав форму,вы тем самым стали готовы использовать SQL*Forms для ее
создания.Создание формы - это,в первую очередь,создание блоков,а создание
блоков - это,в первую очередь,создание полей.Таким образом,процесс представ-
ляет собой,по сути,цикл,состоящий из других циклов :
 A.Использование окна CHOOSE FORM для присвоения имени формы.
 B.Для каждого блока формы :
   1.Использование окна CHOOSE BLOCK для создания блока.
       Блок м.б. или блоком пользователя,или блоком по умолчанию.Если вы со-
     здаете блок пользователя,то вы переходите непосредственно к экранному
     построителю форм.
        В случае блока по умолчанию SQL*Forms сам разместит и пометит поля.
     Вы можете перейти к следующему блоку или войти в экранный построитель
     форм,чтобы модифицировать созданное по умолчанию таким образом,как вы
     сами пожелаете.
   2.Для каждого поля блока :
     a.Размещение или перемещение поля в форме.
     b.Написание или изменение метки для поля.
     c.Использование окна DEFINE FIELD для определения поля.
   3.Улучшение наглядности блока с помощью заключения в рамки и подчеркива-
     ния областей экрана.
   4.Использование окна DEFINE BLOCK для определения блока.
 C.Использование окна FILE для сохранения формы.
 D.Когда форма уже готова для выполнения - использование окна CHOOSE FORM
   для генерации формы.
       Все эти шаги и окна,которые при этом используются,объединены на рис.
4-2.Вы можете определить триггеры и установить параметры выполнения для каж-
дого шага процесса.
       Далее в этой главе вы увидите,что шаги при создании формы очень похо-
жи на шаги при ее модификации.Практически,эти шаги являются компонентами ци-
клического процесса создания,тестирования,модификации и повторного тестиро-
вания формы.

     LOGIN і   ^
           і   і
           v   і [Accept]
             ЙННННННННННННН» FILE           ЙНННННННННННН»
   Ъ--------Дє             є--------------Д>є            є
   v         є  Окно       є                є Окно       є
   GENERATE  є             є                є            є
   і         є CHOOSE FORM є                є FILE       є
   А-------->є             є<--------------Дє            є
             ИНННННННННННННј       SAVE     ИННННННННННННј
    CREATE і   ^
           і   і
           v   і [Accept]
      ЙННННННННННННН» DEFAULT        ЙНННННННННННН»
      є Окно        є--------------Д>є Окно       є
      є             є                є            є
      є CHOOSE      є                є DEFAULT    є
      є BLOCK       є                є BLOCK      є
      є             є<--------------Дє            є
      ИНННННННННННННј  [Accept]      ИННННННННННННј
    CREATE і   ^   COLUMNS і  ^
    или    і   і           і  і
    MODIFY і   і           і  і
           v   і [Accept]  v  [Accept]
   ЙННННННННННННННННННННННННННННННННННННН» ЙНННННННННННН»
   є                                     є є     Окно   є
   є          Экранный построитель форм  є є            є
   є                                     є є SELECT     є
   є              (см.главу 5)           є є COLUMNS    є
   ИНННННННННННННННННННННННННННННННННННННј ИННННННННННННј
                 і[Select Block] ^ і[Create Field] ^
                 і + [Define]    і і или           і
                 і               і і[Select]       і
                 і               і і + [Define]    і
                 v   [Accept]    v і [Accept]
   ЙННННННННННННННННН» ЙННННННННННННННННН»
   є  Окно           є є  Окно           є
   є DEFINE BLOCK    є є DEFINE FIELD    є
   є (см.главу 6)    є є (см.главу 7)    є
   ИНННННННННННННННННј ИНННННННННННННННННј
      Рис.4-2.Создание формы

                          EПрисвоение имени формыF
   Окно CHOOSE FORM появляется после того,как вы запускаете SQL*Forms.Чтобы
начать создание новой формы,наберите имя для формы в области ввода NAME.За-
тем выберите действие CREATE.
   После выбора CREATE вы увидите окно CHOOSE BLOCK,где вы можете создать
первый блок формы.
   Перед тем как выбрать CREATE из окна CHOOSE FORM,вы можете также :
 * выбрать LIST для отображения окна LIST FORMS,которое содержит список су-
   ществующих в БД форм,чьи имена вам нежелательно использовать
 * выбрать DEFINE для отображения окна DEFINE FORM,из которого вы можете оп-
   ределить триггеры уровня формы,как это описано далее в этой главе под за-
   головком "Определение триггеров".
       См.EПриложение ВF для получения более подробной информации об окнах
LIST FORMS и DEFINE FORM.

                             EСоздание блоковF
  Окно CHOOSE BLOCK появляется,когда вы выбираете CREATE в окне CHOOSE FORM.
Чтобы создать новый блок в форме,используйте области ввода Name и Page Num-
ber для ввода имени блока и определения номера страницы формы,с которой этот
блок будет начинаться.Существует 2 способа создания блока :
 * создать блок пользователя,в котором вы сами размещаете поля и их метки,
   выбрав CREATE; или
 * создать блок по умолчанию,в котором размещать поля и их метки будет для
   вас SQL*Forms,выбрав для этого DEFAULT.Два окна,описанные в главе 6,поз-
   волят вам выбрать столбцы и стандартную схему.
      Если вы создаете форму пользователя,то,войдя в экранный построитель
форм,вы увидите пустую форму,где можно определить блок,разместить и опреде-
лить поля и ввести метки.Часто более удобно использовать действие DEFAULT,
даже если вы не хотите получить строго блок по умолчанию,так как вы можете
после этого войти в экранный построитель форм и изменить установленные по
умолчанию размещения полей и меток таким образом,как вам захочется.
   Перед тем, как выбрать CREATE или DEFAULT в окне CHOOSE BLOCK,вы также
можете :
 * выбрать LIST,чтобы отобразить окно LIST BLOCKS,содержащее список блоков,
   которые вы уже создали в этой форме.
 * выбрать FIELDS для вывода окна LIST FIELDS,которое содержит список полей
   блока,чьи имена вы уже ввели.

                       EЭкранный построитель формF
   В экранном построителе форм SQL*Forms вы разрабатываете форму непосредст-
венно на экране.Вы можете в интерактивном режиме добавить,определить,измени-
ть или удалить некоторые части формы.
   Экранный построитель форм подробно описан в главе 5.Находясь в нем,вы мо-
жете :
 * перемещать курсор по всей форме
 * использовать [Select] и [Create Field] для размещения в форме новых полей
 * использовать [Select] и [Define] для отображения окна DEFINE FIELD (опи-
   сано в главе 7),где вы можете указать: на какие столбцы БД ссылаются по-
   ля,где и как они будут отображаться,что может с ними делать оператор и
   каким образом будет осуществляться проверка данных
 * использовать [Select Block] и [Define] для вывода окна DEFINE BLOCK (опи-
   сано в главе 6),где вы можете указать: на какую таблицу БД ссылается блок,
   какие будут отображаться строки и какие будут выполняться запросы
 * ввести метки и поясняющую информацию внутри формы
 * использовать [Draw Box/Line] для выделения областей формы
 * использовать [Cat] и [Paste] для удаления,перемещения или копирования об-
   ластей формы.
        В окнах DEFINE FIELD и DEFINE BLOCK вы также можете определить триг-
геры уровня поля и уровня блока так,как это описано в следующем разделе "Оп-
ределение триггеров".
      Когда вы закончите построение блока,нажмите [Accept] для возврата в
окно CHOOSE BLOCK.Отсюда вы можете создать другой блок или,нажав [Accept],
вернуться в окно CHOOSE FORM,где можно выполнить сохранение,генерацию или
тестирование формы.

                          EОпределение триггеровF
   Триггер представляет собой набор команд SQL или SQL*Forms,которые выпол-
няются или запускаются при наступлении определенного события во время выпол-
нения формы.Например,:
 * когда оператор пытается запустить форму,триггер может проверить время ис-
   пользования или запросить код,санкционирующий доступ
 * когда оператор вводит или изменяет номер отдела для служащего,триггер мо-
   жет проверить,существует ли данный отдел,и вывести его название
 * когда оператор вводит новый заказ,триггер может автоматически присвоить
   ему следующий по порядку N заказа
 * когда оператор входит в определенный блок,триггер может предохранить за-
   пись от удаления,запретив клавишу [Delete Record]
 * когда отображается запись в основном блоке (например,блоке отделов),триг-
   гер может автоматически вывести связанные записи во вспомогательном блоке
   (например,блоке служащих)
 * когда оператор вводит 2 некорректных идентификатора заказчиков в одной
   строке,триггер отображает форму,в которой оператор может осуществить зап-
   рос к таблице CUSTOMER.
        Вы можете определить триггеры на трех уровнях формы :
 * на уровне формы,выбирая TRIGGER в окне DEFINE FORM - чтобы определить,что
   произойдет,когда оператор войдет в форму или покинет ее (и,чтобы опреде-
   лить некоторые триггеры общего назначения)
 * на уровне блока,выбирая TRIGGER в окне DEFINE BLOCK - чтобы определить,
   что произойдет,когда оператор войдет или покинет блок или запись внутри
   блока,или когда записи в блоке вставляются,изменяются или удаляются
 * на уровне поля,выбирая TRIGGER в окне DEFINE FIELD - чтобы определить,что
   произойдет,когда оператор входит в поле,изменяет или покидает его.Напри-
   мер,триггер,определенный на рис.4-6,выполнится,когда оператор изменит
   значение в поле COMMPLAN.Триггер делает проверку правильности значения
   COMMPLAN.
      Триггеры являются основным средством повышения мощности SQL*Forms - и
одновременно самой сложной его частью.Хотя вы можете определить триггеры на
любой стадии создания формы,на практике предпочтительнее делать это в конце
процесса,после того,как блоки и поля созданы,определены и оттестированы.
      Триггеры подробно рассмотрены в главах 8 и 9 данного руководства.

                    EСохранение и генерация формыF
   Когда создание формы закончено,нажимайте [Accept] до тех пор,пока не вер-
нетесь в окно CHOOSE FORM.При этом вы можете :
 * Выбрать FILE,чтобы сохранить форму в своей БД.Окно FILE показано на рис.
   4-7.Выберите SAVE,чтобы сохранить форму с именем,заданным вначале,или
   SAVE AS,чтобы сохранить ее под другим именем.(Вы можете также выбрать
   DISCARD,чтобы покинуть форму,не сохраняя ваших изменений.)
        Заметим,что форма будет оставаться в рабочей области до тех пор,пока
вы не покинете SQL*Forms или не переключитесь на другую форму.Хотя вы не
обязаны сохранять форму до этого момента,тем не менее полезно регулярное со-
хранение,так как ваша работа не будет зависеть от нарушения электропитания
или других системных сбоев.Есле вы попытаетесь выйти из формы или загрузить
другую до того,как произведено сохранение текущей формы,окно FILE появится
автоматически,напоминая вам,что нужно произвести сохранение.
 * Выбрать GENERATE,чтобы сгенерировать выполняемые файлы,необходимые для
   запуска формы (см."Форматы хранения форм" в главе 10 для получения подро-
   бной информации).Вы не должны делать этого,если форма не готова для выпо-
   лнения.Если вы не выполните генерацию,то операторы обнаружат,что они ра-
   ботают со старой версией формы.Когда вы выбираете GENERATE,окно позволит
   вам присвоить имена для генерируемых файлов.Вы можете выбрать текущее имя
   формы (по умолчанию) или ввести новое имя.

                           EМодификация формыF
   На практике вы заметите,что разработка формы представляет собой итерацио-
нный процесс,который состоит из гораздо большего числа изменений,чем созда-
ний.Вы выбираете CREATE из окна CHOOSE FORM только один раз - когда впервые
начинаете разработку формы.С этого момента в любое время вы можете вернуться
в окно CHOOSE FORM,чтобы сохранить форму,"испытать" ее или выйти из SQL*
Forms.Для продолжения процесса разработки формы необходимо выбрать MODIFY.
   Для модификации уже созданной вами формы :
 1.Введите ее имя в окне CHOOSE FORM и выберите действие MODIFY.Вы можете
   также выбрать DEFINE для изменения триггеров уровня формы,или создания
   новых триггеров.
 2.Когда появится окно CHOOSE BLOCK,введите имя блока,с которым вы хотитие
   работать и N страницы,которую вы желаете посмотреть.После этого выберите
   MODIFY.Форма появится в экранном построителе форм и выбранный вами блок
   станет текущим.
       Вы можете также выбрать DROP,чтобы полностью удалить блок и уничтожи-
ть его поля из формы.(Любой введенный вами константный текст не уничтожает-
ся,так как он принадлежит форме,а не блоку.)
       Начиная с этого места процесс идентичен созданию формы.Также,как и
при создании формы,вы можете использовать экранный построитель форм,чтобы :
 * создавать,удалять,переопределять размер или описание полей формы
 * вводить,удалять или редактировать текст
 * создавать,стирать или изменять рамки и линии
 * изменять определение блока
 * модифицировать триггеры уровня блока и уровня поля или создавать новые.
      Блок может располагаться на нескольких страницах,и,один раз создав
его,вы можете разместить поля на любой странице.Чтобы перейти к другой стра-
нице,нажмите [Accept] для возврата в окно CHOOSE BLOCK,введите N страницы,
которую вы хотите посмотреть,а затем выберите MODIFY.Как правило,более удоб-
но сосредоточить поля блока на одной странице.
      Для переключения на другой блок нажмите [Accept],чтобы вернуться в ок-
но CHOOSE BLOCK; введите желаемое имя блока и N страницы; затем выберите
MODIFY.Если вы используете PREVIOUS и NEXT для отображения имен других бло-
ков,не забывайте,что вы еще должны ввести корректный N страницы.
      Чтобы добавить новый блок к форме,нажмите [Accept] для возврата к окну
CHOOSE BLOCK,введите имя и N страницы для нового блока и выберите или CREATE
или DEFAULT.
      Чтобы завершить работу с формой,нажимайте [Accept] до тех пор,пока не
вернетесь в окно CHOOSE FORM.Выберите FILE для перехода в окно FILE,внутри
которого вы можете :
 * выбрать SAVE,чтобы сохранить измененную форму,заменяя при этом предыдущую
   версию (оригинал)
 * выбрать SAVE AS,чтобы сохранить измененную форму под другим именем,остав-
   ляя оригинал нетронутым.
 * выбрать DISCARD,чтобы отменить свои изменения и сохранить только оригинал.
      В окне CHOOSE FORM вы можете также выбрать GENERATE для генерации вы-
полнимых файлов формы.

                     EИзменение порядка следованияF
   Блоки,поля,шаги триггера имеют последовательные номера для определения
порядка,в соответствии с которым они выполняются.Например,порядковые номера
полей внутри блока определяют,куда каждый раз будет перемещаться курсор,ес-
ли оператор нажмет [Next Field] или [Previous Field].Порядковый N поля ото-
бражается в окне DEFINE FIELD (см.рис.4-5).Если вы не изменяете порядковые
номера,то они отражают порядок,в котором создавались поля,но не их располо-
жение на экране.
   Когда вы изменяете порядковый номер,остальные поля,блоки или шаги тригге-
ра перенумеровываются автоматически.
 * Чтобы изменить порядок следования полей,блоков или шагов,просто введите
   новый порядковый N в области ввода Seq #.(Порядковый N.)
      Предположим,у вас есть блок,содержащий 5 полей.Если вы отобразите окно
DEFINE FIELD для поля 4 и перенумеруете его в поле 2,то бывшие поля 2 и 3
автоматически станут полями 3 и 4 соответственно.Подобным образом,если вы
измените N поля 2 на 4,то бывшие поля 3 и 4 станут полями 2 и 3.
 * Чтобы вставить новое поле,блок или шаг триггера в уже существующую после-
   довательность,используйте обычный способ для его создания.Затем просто
   измените его порядковый N.
        Предположим,у вас есть форма из 3 блоков и вы хотите вставить новый
блок с номером 2.Обычным путем создайте блок из окна CHOOSE BLOCK.Затем вы-
ведите DEFINE BLOCK,где по умолчанию новый блок будет иметь номер 4.Если вы
измените Seq # на 2,то бывшие блоки 2 и 3 автоматически станут блоками 3 и 4.
 * Когда вы удаляете поле,блок или шаг триггера,оставшиеся будут автоматиче-
   ски перенумерованы.

                           EТестирование формыF
   Чтобы протестировать форму,запустите ее из окна CHOOSE FORM :
 1.Если имя формы еще не находится в области ввода,введите его.
 2.Если вы еще не сгенерировали выполнимые файлы,выберите GENERATE,чтобы
   сделать это.
 3.Выберите RUN,чтобы запустить форму.Теперь вы можете использовать форму
   как оператор,и испытывать выполнение проверок,триггеров и других средств,
   разработанных вами.
      Чтобы убедиться,что поле определено корректно,переместите курсор в это
поле и используйте [Help] для отображения расширенного экрана-подсказки для
этого поля.Вам нужно будет нажимать [Help] повторно до тех пор,пока не кон-
чатся определенные для этого поля сообщения-подсказки.
      Если вы увидите сообщение,которое начинается "ORACLE error occurred",
нажмите [Display Error],чтобы получить более полную информацию о том,что
произошло.

                             EРежим отладкиF
   Если вы выполняете форму в режиме отладки,SQL*Forms будет выводить в про-
цессе работы сообщения о выполнении триггеров и другую информацию о состоя-
нии формы.Сообщения м.б. полезны для проверки корректности выполнения формы
и поиска тех мест,где происходит ошибка.
   Чтобы получать эту информацию,нажмите [Run-Options Window] и выберите
Debug Mode из окна SPECIFY RUN OPTIONS каждый раз перед генерацией формы.Вас
могут также заинтересовать ключи "Display menu" и "Statistics" в этом окне.
Для получения подробной информации об этих опциях см."Адаптация форм для си-
стем и устройств" в конце этой главы.

                      EРегистрация нажатий клавишF
   Как объяснено в главе 10,компонента SQL*Forms,которая выполняет форму,на-
зывается RUNFORM.Если вы выполняете форму непосредственно с помощью RUNFORM,
а не через окно CHOOSE FORM,вы можете использовать опцию "эхо" (-е) для ре-
гистрации в файле всех нажатий клавиш.Затем вы можете использовать опцию
"чтение" (-r),чтобы воспроизвести эти нажатия.Это м.б. полезно при трассиро-
вке для поиска ускользающих или незаметных ошибок.
   См.главу 10 для получения более подробной информации об использовании
указанных опций.

                 EКопирование,переименование и удаление формF
   Вы можете скопировать,переименовать или удалить форму,выбрав соответству-
ющее действие в окне FILE следующим образом:
 1.В области ввода окна CHOOSE FORM введите имя формы,которая д.б. скопиро-
   вана,переименована или удалена.
 2.Выберите FILE,чтобы отобразить окно FILE (см.рис.4-7).
 3.Чтобы произвести копирование формы,выберите действие SAVE AS.Введите имя
   для копии в появившейся области ввода и нажмите [Accept].
      Чтобы переименовать форму,выберите действие RENAME.Введите новое имя в
      появившейся области ввода и нажмите [Accept].
      Чтобы удалить форму,выберите действие DROP.
 4.Для возврата в окно CHOOSE FORM нажмите [Exit/Cancel].
       Все эти FILE-действия применимы только к форме,определенной в БД,но
никак не влияет на выполнимые файлы формы.Таким образом,если вы копируете
или переименовываете форму,то при желании можно выполнить GENERATE для гене-
рации выполнимых файлов для новой формы.Если вы переименовываете или удаляе-
те форму,то при желании можно воспользоваться командами OC для удаления вы-
полнимых файлов старой формы.

                           EСпециальные темыF
                      EПроцесс внесения измененийF
   Когда оператор нажимает [Commit],или триггер выполняет функцию COMMIT,
SQL*Forms пытается внести изменения в БД.Блоки сохраняются по очереди,в том
порядке,в котором по ним передвигается курсор при нажатии [Next Block].
   В каждом блоке внесение изменений по каждой вставляемой,изменяемой или
удаляемой записи производится последовательно.
   Если некоторое поле некоторой записи некоторого блока не прошло проверку
на правильность,или,если какой-то триггер завершится неудачно во время вне-
сения изменений,весь процесс внесения изменений останавливается и все изме-
нения БД отменяются.Затем оператор должен исправить ошибку и снова нажать
[Commit].
   Рис.4-8.показывает порядок проверки правильности и выполнения триггеров
во время внесения изменений.
   ДЛЯ каждого блока по порядку
    ДЛЯ каждой записи
     ДЛЯ каждого поля
      ЕСЛИ это поле помечено как изменяемое,
       ТОГДА проверить правильность поля
        (см.главу 7)
    ДЛЯ каждой удаляемой записи
     Выполнить триггер pre-delete
     Удалить соответствующую строку из таблицы
     Выполнить триггер post-delete
    ДЛЯ каждой вставляемой или изменяемой записи
     ЕСЛИ запись вставляется,ТОГДА
      Скопировать поля
      Выполнить триггер pre-insert
      Проверить уникальность (если определена)
      Вставить соответствующую строку в таблицу
      Выполнить триггер post-insert
     ЕСЛИ запись изменяется,ТОГДА
      Выполнить триггер pre-update
      Проверить уникальность (если определена)
      Изменить соответствующую строку в таблице
      Выполнить триггер post-update
   ВНЕСТИ ИЗМЕНЕНИЯ (COMMIT)
   Пометить все записи и поля признаком достоверности.

                     EБлокирование таблиц и строкF
SQL*Forms автоматически управляет блокировкой таблиц и записей в том случае,
когда 2 или более операторов пытаются использовать одну и ту же таблицу в
одно и то же время.При изложении материала подразумевается,что вы знакомы с
методами блокировки ORACLE,описанными в "SQL*Plus.Руководство пользователя".
   Когда оператор запрашивает блок или начинает вводить в него новую запись,
базовая таблица для этого блока блокируется в режиме разделяемой корректиро-
вки (share update).Это позволяет нескольким операторам производить запрос и
изменять таблицу параллельно.Когда оператор изменяет значение строки табли-
цы,SQL*Forms выдает для этой строки SELECT FOR UPDATE.ORACLE затем препятст-
вует изменению этой строки другими операторами до тех пор,пока первый опера-
тор не завершит транзакцию.
   Таблица остается блокированной в режиме share update до тех пор,пока опе-
ратор не попытается сохранить изменения в БД.Если попытка внесения изменений
заканчивается ошибкой,изменения отменяются,но блокировки автоматически сох-
раняются,так чтобы оператор смог исправить и повторно сохранить данные.
   Процесс блокировки таблиц и записей несколько отличается в том случае,ко-
гда триггер производит изменения в таблице.Для получения подробной информа-
ции см."Специальные темы" под заголовком "Команды SQL в триггерах" в главе 9.

                EАдаптация формы для систем и устройствF
                             Системные вопросы
   Если разрабатываемая вами форма будет выполняться в системе с ограничен-
ным объемом памяти,вы можете при желании настроить некоторые ее параметры
выполнения для того,чтобы удовлетворить требованиям по объему памяти.Для
этого нажмите [Run-Options Window] в любой момент во время разработки формы.
Вы увидите меню SPECIFY RUN OPTIONS,содержащее ключи для управления памятью,
отладкой и некоторыми возможностями оператора,как это показано на рис.4-9.
   В окне SPECIFY RUN OPTIONS имеется 6 ключей.Два из них уже выбраны по
умолчанию,но вы можете выбрать любую комбинацию :
 * Buffer records with file (буферизация записей в файле): Экономит память
   (но замедляет обработку) с помощью буферизации запрашиваемых записей в
   файле вместо использования памяти.
 * Display menu (вывод меню) : Во время выполнения формы помогает ее тести-
   рованию,высвечивая меню блоков,из которого можно сделать выбор (вместо
   выполнения непосредсвенно с первого блока).
 * Optimize SQL processing (оптимизация SQL-обработки): Выбран по умолчанию.
   Если этот параметр исключен,то экономится память (но замедляется обработ-
   ка) за счет назначения отдельного курсора (области памяти) только тем ша-
   гам триггера,которые вы конкретно определите (в отличии от назначения для
   всех шагов триггера).
 * Quiet mode ("тихий" режим) : Отключает звуковой сигнал при автоматическом
   переходе,выдаче подсказки и других сообщений.
 * Statistics (статистика) : Облегчает тестирование,высвечивая число устано-
   вок курсора в конце сеанса RUN.
 * Optimize transaction processing (оптимизация процесса транзакции): Выбран
   по умолчанию.Если этот параметр исключен,то экономится память (но замед-
   ляется обработка) за счет назначения отдельного курсора (области памяти)
   только операторам запроса SELECT (в отличии от назначения операторам
   insert,update,delete,lock table и selectfor-update).
 * Debug mode (режим отладки) : Высвечивает в процессе работы сообщения о
   выполнении триггеров и о других состояниях формы.Как правило,для этого
   требуется небольшой объем памяти.
       Описания формы обычно совместимы с различными типами компьютеров.
См.главу 10,"Компоненты SQL*Forms",для получения информации о переносе формы
в другую систему.

                                Вопросы устройств
   Форма,разрабатываемая вами с помощью SQL*Forms,обычно является независси-
мой от устройств.Форма,которую вы разработали на одном видеотерминале,будет
работать на любом другом.
   Тем не менее,формы,которые используют линии,рамки или графические символы
- уникальные для определенного типа терминала,- не м.б. полностью независси-
мыми от устройств.Такие формы м.б.,при желании,перегенерированы или даже мо-
дифицированы для использования на более,чем одном видеотерминале,или на тер-
минале,отличном от установленного вами по умолчанию.См.главу 10 "Компоненты
SQL*Forms" для получения более подробной информации.
   Разрабатывая форму,подумайте о типах видеотерминалов,которые будет испо-
льзовать оператор.Например,не все устройства используют одинаковые символы
для отображения линий и рамок.В частности,терминал IBM 3270 и некоторые дру-
гие устройства используют вертикальную черту для построения вертикальных ли-
ний и знаки переноса для построения горизонтальных линий.Визуальный эффект
от этих символов может повлиять на использование вами линий и рамок в форме,
которая будет выполняться на таких устройствах.
   Также рассмотрите технику, используемую для "прокрутки" части экрана.Это
относится к разработке форм,включающих в себя мультиблоки,содержимое которых
может "прокручиваться",когда оператор выбирает запись из запроса.Некоторые
блокоориентированные терминалы используют технику полиэкранной "прокрутки",
при которой одновременно "прокручивается" текст всей строки.Если вы исполь-
зуете константный текст (шаблон) в тех строках,которые "прокручиваются",он
будет "прокручиваться" точно таким же образом (см.рис.4-10).
   Блокоориентированные терминалы также требуют один пропуск между полями и
между полями и текстом.Если вы разрабатываете форму для работы в блокоорие-
нтированной среде,смотрите "ORACLE.Руководство по установке и использованию"
для получения подробной информации по вопросам блокоориентированной обработ-
ки.

+                            EГЛАВАF E5F
                      EЭкранный Построитель ФормF
   Экранный построитель форм - это часть SQL*Forms,в которой вы создаете фо-
рмы непосредственно на экране.Результаты ваших действий,как то: создание по-
лей,внесение какого-либо текста в форму,появляются сразу же перед вами на
экране.
   В этой главе рассматриваются следующие вопросы:
 * как войти и выйти из экранного построителя
 * что представляет из себя экранный построитель
 * как перемещать курсор
 * как набирать фиксированную информацию формы
 * как работать с блоками и полями
 * как рисовать рамки и линии
 * как копировать,перемещать и удалять области в форме.

               EВход и выход из экранного построителяF
                    EВход в экранный построительF
   Экранный построитель форм работает с одним блоком формы.Для входа в пост-
роитель форм наберите в соответствующих областях ввода окна CHOOSE BLOCK имя
блока и N страницы,с которыми вы хотите работать.Затем выберите CREATE для
создания нового блока или MODIFY для изменения уже существующего.
EПримечаниеF: Помните,что при выборе CREATE для создания нового блока на
                неиспользуемой странице экранный построитель выдаст вам пус-
                той экран,поскольку на этой странице ничего нет.

                   EВыход из экранного построителяF
   Чтобы покинуть построитель форм,нажмите [Accept] или [Exit/Cancel].Форма
исчезнет,и вы снова увидите окно CHOOSE BLOCK.
   При выходе из построителя форм по [Exit/Cancel] SQL*Forms не отменяет
произведенные вами изменения,как это обычно происходит в окнах.Для последо-
вательной отмены изменений используйте [Undo].Для отмены всех изменений,про-
изведенных в текущем сеансе,дважды нажмите [Exit/Cancel] для возврата в окно
CHOOSE FORM,выберите FILE,чтобы высветить окно FILE,а затем выберите DISCARD.

                  EСмена текущей страницы или блокаF
   Блок распространяется на все страницы формы,хотя обычно все поля блока
собраны на одной странице.Если вы хотите работать с другой страницей,нажмите
[Accept] или [Exit/Cancel] для возврата в окно CHOOSE BLOCK.В области ввода
наберите нужный N страницы и выбирите MODIFY для возвращения в экранный пос-
троитель.
  Если вы хотите работать с другим блоком,нажмите [Accept] или [Exit/Cancel]
для выхода из построителя форм в окно CHOOSE BLOCK.Наберите имя нового блока
и N страницы в области ввода и выберите либо CREATE (если это вновь создава-
емый блок),либо MODIFY (если блок уже существует) для возврата в экранный
построитель форм.
   Если вы используете PREVIOUS и NEXT для высвечивания в окне имен других
блоков,не забудьте правильно указать N страницы до выбора других действий.

                 EРабота с экранным построителемF
   После того,как вы вошли в экранный построитель,на экране высвечиваются
имя блока и N страницы.Если вы создали новый блок на свободной странице,то
эти аттрибуты не высвечиваются.
   Сведения о строке состояния содержаться в разделе "Экран" главы 3 данного
руководства.

                          EЧто можно делать?F
   В экранном построителе вы можете:
 * перемещать курсор по экрану
 * набирать и изменять константный текст
 * создавать и описывать поля в текущем блоке
 * определять текущий блок
 * чертить рамки и линии
 * копировать,перемещать и удалять области в форме.
 * отменять ваши действия

                           EОтмена действийF
   Для отмены результатов последнего действия нажмите [Undo].При последующих
нажатиях [Undo] будет производиться отмена каждого предыдущего действия,за-
вершавшегося успешно.
   [Undo] не действует на опции и параметры,выбранные в окнах,также не влия-
ет на константный текст,который вы набрали в форме.Однако,косвенно вы можете
влиять на текстовую информацию,отменяя функции,изменяющие его,такие,как
[Cut] и [Paste].

                         EПеремещение курсораF
   Когда вы входите в экранный построитель форм,то вначале курсор помещается
в верхний левый угол экрана.Для перемещения курсора вверх,вниз,влево,вправо
используются клавиши [Up],[Down],[Left],[Right] соответственно.
   Вы можете перемещать курсор по всему экрану,даже если на нем нет никакого
текста.Курсор автоматически будет переходить с крайней верхней строки на ни-
жнюю при движении вверх,с крайней левой позиции в крайнюю правую - при дви-
жении влево,и наоборот - при движении вправо из крайней правой позиции.
   При нажатии [Next Field] курсор будет перемещаться в блоке от поля к полю
в английском порядке чтения.От последнего поля он переходит к первому.Анало-
гично действует [Previous Field],только в обратном направлении.
   [Next Field] и [Previous Field] перемещают курсор только по полям текуще-
го блока и текущей страницы.Для работы с другими блоками или страницами нео-
бходимо выйти из экранного построителя и выбрать другие блоки или страницы в
окне CHOOSE BLOCK.

                        EВвод константного текстаF
   Находясь в экранном построителе,вы можете перемещаться по всему экрану и
набирать константный текст в любом месте,за исключением полей.Этот текст бу-
дет появляться в форме в том виде,в котором вы его набрали,независимо от то-
го,как изменяется содержание полей.
   Константный текст можно использовать для заголовков полей,блоков,таблиц,
форм,для написания инструкций и подсказок,а также для украшения формы.
   Редактировать константный текст можно по разному.Вы можете использовать
[Delete Character] или [Delete Backward] для стирания символов,либо можно
набирать новый текст поверх старого в режиме замены.Имейте в виду,что клави-
ши [Delete] удаляют только текст,но не поля.
   Вы также можете работать в режиме вставки,нажав [Insert/Replace].При этом
набираемый текст будет вставляться перед курсором,а все,что находится справа
от курсора,будет сдвигаться еще правее.
   Константный текст - информация,принадлежащая всей форме,а не какому-либо
определенному блоку.Работая в экранном построителе,вы можете набирать текст
в любом месте страницы,даже вне области текущего блока.Вследствии этого,при
удалении блока текст,набранный вами в процессе создания этого блока,останет-
ся без изменений.

                         EРабота с блокамиF
   Создание и определение блоков подробно описано в главе 6.

                           EСоздание блокаF
   Находясь в экранном построителе,нельзя создать новый блок.Для этого вам
необходимо сначала выйти из него и вернуться в окно CHOOSE BLOCK.В области
ввода наберите имя блока и N страницы.
   Затем:
 * выберите CREATE для создания блока пользователя,при этом вы сразу войдете
   в экранный построитель форм; либо
 * выберите DEFAULT для создания блока по умолчанию.Когда блок будет создан,
   вы вернетесь в окно CHOOSE BLOCK,где вы можете выбрать MODIFY для входа в
   экранный построитель.

                           EОпределение блокаF
   Находясь в экранном построителе,для определения параметров текущего блока
нажмите [Select Block],а затем [Define].Высветится окно DEFINE BLOCK,в кото-
ром можно произвести следующие действия:
 * выбрать таблицу,к которой будет привязан блок
 * управлять запросами для блока
 * описать,как будут высвечиваться строки
 * описать способ обработки значений первичного ключа
 * определить триггеры для блока.
   Подробно окно DEFINE BLOCK описано в главе 6.

                             EУдаление блокаF
   Находясь в экранном построителе,нельзя удалить существующий блок.Для это-
го вам необходимо выйти из него и вернуться в окно CHOOSE BLOCK; далее в об-
ласти ввода наберите имя блока и N страницы; затем выберите DROP.
EПримечание:F автоматически из формы удаляются только поля,константный те-
                кст же остается нетронутым,поскольку он принадлежит не бло-
                ку,а форме.Для удаления текста используйте экранный построи-
                тель (вам понадобиться сделать это в случае,когда вы хотите
                заменить удаляемый блок на блок по умолчанию).

                            EРабота с полямиF
   Создание и определение полей более подробно описано в главе 7.

                             EСоздание полейF
   Чтобы создать новое поле,проделайте следующие действия:
 1.Поместите курсор в то место,где должно начинаться поле,и нажмите [Select];
 2.Переместите курсор туда,где поле должно заканчиваться,и снова нажмите
   [Select];
 3.Нажмите [Create Field].
   SQL*Forms создаст поле и высветит окно DEFINE FIELD,в котором вы можете
определить параметры поля.
   При создании мультиблока вы определяете поле только для первой записи;
разумеется,на странице необходимо оставить пространство,достаточное для всех
записей.Укажите число записей в блоке и число высвечиваемых строк для каждой
записи в окне DEFINE BLOCK (см.главу 6).
   Чтобы создать новое поле на другой странице формы,нажмите [Accept] для
возврата в окно CHOOSE BLOCK.Наберите N страницы в области ввода и выберите
MODIFY для повторного входа в экранный построитель.Обычно все поля блока со-
бираются на одной странице,однако,это не является обязательным условием.Нап-
ример,вы можете захотеть поместить поля,содержащие промежуточные значения
или конфиденциальную информацию,на нулевую страницу,которую оператор не смо-
жет увидеть.

                            EОпределение поляF
   Чтобы установить параметры уже существующего поля,поместите курсор в поле
и нажмите [DEFINE].Высветится окно DEFINE FIELD,в котором вы сможете произ-
вести следующие действия:
 * выбрать тип данных поля;
 * определить его атрибуты;
 * описать,как проверяются его данные;
 * определить триггеры для поля.
   Более подробно окно DEFINE FIELD описано в главе 7.

                          EИзменения размера поляF
   Для изменения ширины поля вывода произведите следующие действия:
 1.Поместите курсор в поле и нажмите [Select].
 2.Поместите курсор в место,где должен находиться последний символ в поле.
 3.Нажмите [Resize Field].

                  EУдаление,перемещение и копирование поляF
Чтобы удалить,переместить или скопировать поле,проделайте следующие операции:
 1.Поместите курсор в поле и нажмите [Select].
 2.Нажмите [Cut].
    Поле исчезнет с экрана.Если вы хотите просто уничтожить поле,то остано-
    витесь на этом этапе.
 3.Если вы хотите скопировать поле,нажмите [Paste] для восстановления его на
   старом месте.Все параметры остануться без изменений,за исключением поряд-
   кового номера.
 4.Передвинте курсор в то место,куда вы хотите переместить или скопировать
   поле,и нажмите [Paste].Скопированное поле будет иметь то же имя,что и
   оригинал.Необходимо переименовать его в окне DEFINE FIELD.

                      EВычерчивание рамок и линийF
   Для повышения визуального восприятия и привлечения внимания к форме можно
использовать клавишу [Draw Box/Line].Рамки и линиии особо полезны для разде-
ления элементов страницы,например,блоков.
   Чтобы начертить рамку,либо горизонтальную или вертикальную линию,произве-
дите следующие действия:
 1.Поместите курсор в одном из предлагаемых углов рамки,либо в одном из пре-
   длагаемых концов линиии и нажмите [Select].
 2.Передвиньте курсор в противоположный угол рамки,либо другой конец линии и
   нажмите снова [Select].
 3.Нажмите [Draw Box/Line].
   Чтобы начертить рамку вокруг всей страницы,нажмите [Select Block],а затем
   [Draw Box/Line].
      Рамки и линии на различных терминалах могут изображаться по разному.
Если вы используете эти элементы формы,то не забывайте генерировать выполни-
мые файлы для тех устройств,на которых они будут запускаться.В противном
случае могут возникнуть искажения.Для дополнительной информации по этому во-
просу смотрите главу 10 "Компоненты SQL*Forms".

      EУдаление,перемещение и копирование объектов и областей формыF
   Для удаления,перемещения и копирования объектов и областей формы в проце-
ссе ее модификации используются клавиши [Cut] и [Paste].Объекты включают в
себя поля,линии и стороны рамок.Областью является любой "кусок" формы,с гра-
ницей,не пересекающей поля,и включающий поля только текущего блока.
 [Cut]   удаляет объекты и области с экрана и временно сохраняет их в памяти.
 [Paste] восстанавливает последний запомненный объект или область в позиции
         курсора.Восстанавливать можно в любом месте формы,включая другие
         страницы,при условии,что восстанавливаемые поля не будут перекрыва-
         ть уже существующие.Один и тот же фрагмент можно восстанавливать
         сколько угодно раз.Помните,что при восстановлении у полей не сохра-
         няются порядковые номера.

                       EУдаление объектов и областейF
   Чтобы удалить объект или область из формы,проделайте следующие операции:
 1.Если объектом является поле,горизонтальная линия или горизонтальная сто-
   рона рамки,установите на него курсор и нажмите [Select].
       В остальных случаях,отметьте при помощи [Select] сначала один угол
    или конец области,а затем другой угол или другой конец области.
 2.Нажмите [Cut].
    Объект или область исчезнет с экрана.

                       EПеремещение объектов и областейF
   Для перемещения объекта или области внутри формы проделайте следующие
операции:
 1.Запомните его при помощи [Cut],как описано выше в параграфе "Удаление
   объекта и фрагмента".
 2.Поместите курсор туда,где будет находиться верхний левый угол объекта или
   фрагмента и нажмите [Paste].
 3.Если вы переместили поля,то измените их порядковые номера при помощи окна
   DEFINE FIELD.
      Рисунки 5-4 и 5-5 показывают,как вы можете переместить блок LINEITEMS
со страницы 1 на страницу 3.

                      EКопирование объекта или областиF
   Чтобы скопировать объект или область из одной части формы в другую,произ-
ведите следующие оперции:
 1.Запомните их при помощи [Cut],как описано выше в параграфе "Удаление объ-
   ектов и областей".
 2.Нажмите [Paste] для восстановления на старом месте.
 3.Переместите курсор туда,где должен находиться верхний левый угол копии и
   нажмите [Paste].
       Этот шаг можно повторять столько раз,сколько пожелаете.
 4.Если вы скопировали поля,то переименуйте их при помощи окна DEFINE FIELD.

KOAP Open Portal 2000