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



                      ВВЕДЕНИЕ В SQL*Forms(TM)
            ("ЭЛЕКТРОННЫЕ БЛАНКИ" СТАНДАРТНОГО ЯЗЫКА ЗАПРОСОВ)
                              ORACLE
                              The Relational Database Management System
                              (Система управления реляционными базами данных)
  
                               ПРЕДИСЛОВИЕ
                        (Информация о SQL*Forms)
       SQL*Forms позволяет Вам быстро разрабатывать основанные на бланках*
прикладные системы (ПС) для ввода,модификации и удаления данных.Вместо програ-
ммирования,Вы просто указываете,что нужно для Вашей ПС,используя несложные ме-
ню и мощный редактор экранов.Потом SQL*Forms комбинирует Ваши инструкции с ин-
формацией из словаря данных ORACLE,чтобы создать Вашу ПС.
 
                  Эффективное использование прототипов
      Уникальный непроцедурный подход SQL*Forms позволяет Вам эффективно соз-
давать прототипы для ПС.Прототипы дают Вам и Вашим пользователям возможность
усовершенствовать ПС по мере создания.Если Вы улучшили проект,просто укажите
Ваши изменения и SQL*Forms включит их автоматически.С SQL*Forms Вы можете ско-
нцентрироваться на модернизации проекта вместо рутинного программирования.Ког-
да Ваш проект отвечает требованиям - Ваша ПС готова,потому что Ваш прототип и
есть Ваша ПС.
  
                      Неограниченные возможности
      SQL*Forms решает сложные проблемы,перед которыми пасуют другие программы
4-ого поколения.Вы можете быстро создать нужную Вам ПС путем "строительства"
на автоматически сгенерированном логическом "фундаменте" SQL*Forms.Это намного
быстрее,чем программирование.
       
   *) Слово "form" будет переводиться не "электронный бланк",как принято в со-
ветской литературе,а для краткости просто "бланк" (без кавычек).(Прим. перев.)
   
                           Открытая архитектура
      Через открытую архитектуру SQL*Forms гарантирует Вам мощь,которая позво-
ляет включить существующие программы,написанные на КОБОЛЕ,Си и большинстве
других языков программирования.Таким образом,Вы всегда можете обрабатывать ин-
формацию любым угодным способом.
 
                 Гибкость для Ваших меняющихся потребностей
      С SQL*Forms Вы всегда можете легко отвечать на меняющиеся потребности
задачи.Чтобы настроить Вашу SQL*Forms'ПС требуются минуты вместо обычных меся-
цев.Непроцедурная структура SQL*Forms и гибкость СУБД ORACLE обеспечивают Вам
успех.
       
                             СОДЕРЖАНИЕ
 ВВЕДЕНИЕ
 Пример ПС  .............................................................
 СОЗДАНИЕ БЛАНКА ПО УМОЛЧАНИЮ
 Разработка полностью функционального бланка для
 наименований товаров за несколько нажатий клавиш  ......................
 РАБОТА С БЛАНКОМ
 Использование функциональности,которой SQL*Forms наделяет
 Ваш бланк для наименований  ...........................................
 ИЗМЕНЕНИЯ В ФУНКЦИОНИРОВАНИИ БЛАНКОВ
 Как легко приспособить бланк к Вашим условиям  ........................
 ОФОРМЛЕНИЕ ЭКРАНОВ
 Как сделать так,чтобы бланк покупателя выглядел так,как Вы хотите  ....
 ОВЛАДЕНИЕ СИЛОЙ SQL*Forms
 Создание сложного бланка ввода заказов  ...............................
 ОБОБЩЕНИЕ  ............................................................
  
                                 ВВЕДЕНИЕ
                                 Пример ПС
      Это введение в SQL*Forms иллюстрирует,как SQL*Forms решает трудности
 разработки ПС на примере создания реальной ПС от начала до конца.За более
 детальной технической информацией обращайтесь к Руководству оператора
 SQL*Forms и справочнику разработчика.По мере изучения этого примера ПС Вы
 увидите,как SQL*Forms позволяет Вам работать эффективно.
  
  1.SQL*Forms делает основную часть работы за Вас,автоматически подготав-
    ливая полностью функциональный бланк.
  2.Потом Вы можете отрегулировать функционирование и внешний вид бланка,
    используя простые меню и редактор экранов SQL*Forms.
  3.В дальнейшем,если Вам потребуется еще усложнить бланк,Вы можете ис-
    пользовать открытую архитектуру SQL*Forms,чтобы надстроить дополнительные
    возможности на фундамент по умолчанию.Поскольку SQL*Forms сам заботится о
    фундаменте,Вам только нужно указать Ваши изменения,таким образом Ваша ра-
    бота сокращается настолько,что Вы можете быстро закончить даже самые слож-
    ные ПС.
      Этот прогрессивный процесс разработки позволяет Вам работать эффективно.
 Поскольку внесение изменений на любой стадии процесса очень легко,Вы смо-
 жете усвоить гибкий стиль работы,который позволит Вам быстро реагировать
 на предложения пользователя.Вы сможете разрабатывать именно то,что нужно
 Вашей компании,а не просто "нечто похожее".
  
                           ПРИКЛАДНАЯ СИСТЕМА
       Представьте себе,что Вы разработчик ПС,работающий на производителя
 спортивных товаров.Вас попросили разработать систему ввода заказов для но-
 вого отделения Вашей компании.
       В пределах этого отделения систему будут использовать несколько
 групп.Инвентарный отдел будет вводить и поддерживать информацию о наимено-
 ваниях товаров.Группа маркетинга будет следить за политикой цен.Отдел
 продажи будет вводить информацию о покупателях и собственно заказы.
                       Ъ----------------------ї
                       і     Генеральный      і
                       і менеджер  отделения  і
                       А----------В----------ДЩ
          Ъ----------------------ДЕ------------------------ї
    Ъ----ДБ----Дї           Ъ----ДБ----Дї             Ъ----Б----ї
    і Инвентарь і           і Маркетинг і             і Продажа і
    А----------ДЩ           А----------ДЩ             А--------ДЩ
   *Наименования               *Цены                 *Покупатели
                                                     *Заказы
    Много людей из различных отделов будут пользоваться Вашей ПС одновременно
       Поскольку много людей из различных отделов будут пользоваться Вашей
 ПС,система должна поддерживать многопользовательский режим,не вызывая
 конфликтов или продолжительных пауз.
       Вашим первым шагом д.б. опрос менеджеров по продаже,инвентарю и марке-
тингу для выяснения предварительных требований к системе ввода заказов.Проана-
лизировав их требования,Вы определяете основную структуру Вашей БД.
                                   
                                  Покупатель
 Ъ------ДТ----ДВ------В------В----ДВ------------В----ДВ--------В------------ї
 і Номер є Имя іАдрес іГород іШтат іПочт.индекс іЗона іТелефон іОграничения і
 і покуп.є     і      і      і     і            і     і        ікредита     і
 А------ДР----ДБ------Б------Б----ДБ------------Б----ДБ--------Б------------Щ
                           
                         Заказ (заглавная информация)
 Ъ--------ДТ------------В--------В----------В--------В------------ДВ--------ї
 і Номер   є Номер      іВсего   іТорговый  іДата    іКомиссионный іСтатус  і
 і заказа  є покупателя ізаказов ікод       ізаказа  іплан         і        і
 А--------ДР------------Б--------Б----------Б--------Б------------ДБ--------Щ
       
                           Заказ (отдельный предмет)
 Ъ----------Т------------В----------------В--------В--------------В--------Дї
 і Номер    є Номер      і Номер          і Цена   і Количество   і Всего   і
 і заказа   є предмета   і наименования   і        і              і         і
 А----------Р------------Б----------------Б--------Б--------------Б--------ДЩ
  
                                Наименование
 Ъ----------------ДТ--------------В------------------ДВ------------------Дї
 і Номер           є  Описание    і  Цена             і Дата вступления   і
 і наименования    є              і  по каталогу      і цены в силу       і
 А----------------ДР--------------Б------------------ДБ------------------ДЩ
       Основной работой для Вас будет создание 3 бланков для введения,под-
 держания и запроса информации из этой БД.
  
  Бланк                     Таблицы,к которым          Основные
                            имеется доступ              пользователи
 ----------------------------------------------------------------------------Д
       
  Наименования              PART                        Инвентарь и маркетинг
  Покупателя                CUSTOMER                    Продажа
  Ввода заказов             ORDER,LINEITEM              Продажа

  Следующие разделы продемонстрируют Вам процесс разработки каждого из
 этих бланков.
  
                        СОЗДАНИЕ БЛАНКА ПО УМОЛЧАНИЮ
        Вашим первым шагом в разработке системы ввода заказов будет создание
 бланка для наименований,основывающееся на указаниях менеджера по инвентарю:
     "Каждое наименование имеет свой номер,описание,цену и дату,когда це-
 на вступила в силу.Все,что мне нужно,это быстрый способ ввода информации
 для моих людей".
       Вы можете быстро создать Ваш первый прототип,основываясь на советах ме-
неджера.Определите таблицу PART (наименование) одним простым оператором SQL:
       
      CREATE  TABLE  Part
               (part_num                  NUMBER,
                description               CHAR (25),
                list_price                NUMBER,
                effective date            DATE);
       
 Ъ--------------ДТ--------------------------ДВ------------ДВ----------------Дї
 і Номер         є Описание                  іЦена         іДата вступления  і
 і наименования  є                           іпо каталогу  іцены в силу      і
 Г--------------ДЧ--------------------------ДЕ------------ДЕ----------------Дґ
 і 9999999       єААААААААААААААААААААААААА  і999.99       і---МЕС-ГГ        і
 А--------------ДР--------------------------ДБ------------ДБ----------------ДЩ
       Когда Вы создадите таблицу,ORACLE поместит ее описание в словарь дан-
ных.SQL*Forms потом будет использовать эту информацию для построения Вашей ПС.
       Теперь,когда Вы определили Вашу таблицу PART,Вы можете создать пол-
 ностью функциональный бланк всего за несколько нажатий клавиш,используя
 окна-меню SQL*Forms.
       Первое меню SQL*Forms позволяет Вам указать имя бланка,с которым Вы
 хотите работать.Если Вы хотите,чтобы Ваш бланк назывался Partform,впеча-
 тайте "PARTFORM" и выберите действие "CREATE".
  
   Шаг 1:
  впечатать название бланка
      Ъ------------------------------Дї
      і         CHOOSE FORM           і
      і Name                          і
      і±PARTFORM±±±±±±±±±±±±±±±±±±±±±±і -
      і Actions:                      і
      і  CREATE      MODIFY      LIST і
      і  RUN         DEFINE      LOAD і
      і  FILE        GENERATE         і
      А------------------------------ДЩ
       SQL*Forms позволяет Вам использовать сколько угодно таблиц в пределах
 одного бланка,поэтому следующее меню дает Вам возможность указать,какие
 таблицы Вы хотите.*  Введите название таблицы,PART,и выберите действие
 "DEFAULT",чтобы SQL*Forms автоматически определил бланк.
  
  Шаг 2:
  впечатать называние таблицы:
      Ъ------------------------------Дї
      і         CHOOSE FORM           і
      і Name                          і
      і±PARTFORM±±±±±±±±±±±±±±±±±±±±±±і
      і Ъ----------------------------ДБДї
      і і         CHOOSE BLOCK          і
      і і Name                          і
      АДґ±PART±±±±±±±±±±±±±±±±±±±±±±±±±±і -
        і Page Number: ±1±              і
        і Actions:                      і
        і CREATE     MODIFY     DROP    і
        і LIST       FIELDS     DEFAULT і
        і PREVIOUS   NEXT               і
        А------------------------------ДЩ
       *) Фактически,SQL*Forms позволяет Вам дать имя "блоку",потому что
 Вы можете создать бланк не только для простой таблицы,но и для блока -
 мощного расширения таблицы,которое может содержать вычисляемые поля и по-
 ля,не принадлежащие к базе данных.
       Последней стадией в создании Вашего бланка является сообщение
 SQL*Forms,сколько строк данных Вы хотите видеть на экране одновременно.
  Чтобы указать семь строк,просто впечатайте "7" в следующее наложенное окно.
  
  Шаг 3:
  выбрать,сколько строк данных Вы хотите видеть одновременно:
      Ъ------------------------------Дї
      і         CHOOSE FORM           і
      і Name                          і
      і±PARTFORM±±±±±±±±±±±±±±±±±±±±±±і
      і Ъ----------------------------ДБДї
      і і         CHOOSE BLOCK          і
      і і Name                          і
      АДґ±PART±±±±±±±±±±±±±±±±±±±±±±±±±±і
        і Page Number:±1±               і
        і Ъ----------------------------ДБ----------ї
        і і             DEFAULT BLOCK              і
        і і Table Name:                            і
        і і±PART±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±і
        АДґ Rows Displayed:±7±                     і  -
          і      Base Line:±1±                     і
          і Actions:                               і
          і      COLUMNS      TABLES               і
          А----------------------------------------Щ
                                        
 Обобщение
 Вы создали полностью функциональный бланк для наименований (1 мин.)
       
       Теперь Вы закончили.Вы только что определили Ваш бланк для наимено-
 ваний путем:
  1.Впечатывания названия бланка.
  2.Впечатывания названия таблицы.
  З.Указания числа одновременно видимых строк.
       Вам не нужно давать информацию о каждом поле,потому что SQL*Forms
 сам теперь берет всю требуемую информацию о таблице PART из словаря данных
 ORACLE и создает для Вас бланк.SQL*Forms автоматически выводит бланк с
 нужным размером колонок и заголовков и с Вашим указанным количеством однов-
 ременно выводимых строк:
  
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
  
                                РАБОТА С БЛАНКОМ
 Использование функциональности,которой SQL*Forms наделяет Ваш бланк для
                                 наименований
     Бланк для наименований,который Вы только что создали,дает Вам полный ком-
плект возможностей для введения,запрашивания,корректировки и удаления данных
не только для одного пользователя,но и для множества работающих одновременно
пользователей.Вы увидите всю быстроту и мощь SQL*Forms,пока Вы учите Дейва Ма-
ршалла,администратора по инвентарю,работать с новой системой для наименований.
        Сначала Вы увидите экран запроса пароля.SQL*Forms предлагает полную
 безопасность - все пользователи бланков должны иметь допустимые в системе
 ORACLE имена пользователя (ID) и пароли.Пользователи могут иметь привеле-
 гии выполнять все функции над указанными данными или только часть функций
 (вводить,запрашивать,корректировать или удалять данные).
       
  Чтобы  использовать SQL*Forms Вы должны ввести правильный пароль:
  Ъ------------------------------------------------------------------------Дї
  і SQL*Forms (Design): Version 2.3         Thu Jan 7  10:24:14  1988       і
  і Copyright(c) 1987,Oracle Corporation California,USA,All rights reservedі
  Г------------------------------------------------------------------------Дґ
  і                Username ±MARSHALL±±±±±±±±±±±±±±±±±±±±±                  і-
  і                Password                                                 і
       
                                Легкий ввод данных
        Теперь,когда Вы ввели правильные имя пользователя и пароль,начи-
 найте вводить данные,впечатывая их в бланк.
  
  Вводите данные простым впечатыванием,можно несколько записей сразу:
                   ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88      -
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  ±±±±±±±±±±  ±±±±±±±±±      -
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
       Введите сразу несколь записей.Вы можете двигаться вперед и назад в
 пределах строки или вверх и вниз между строками.Чтобы быстро исправить ра-
 нее сделанную ошибку,используйте уже знакомые Вам клавиши-стрелки.Если Вы
 вводите больше строк,чем помещается на экране,Вы можете выполнить прок-
 рутку вверх или вниз,чтобы увидеть строчки,вышедшие из поля зрения.
       SQL*Forms автоматически проверяет Ваши данные во время ввода.Он сверяе-
тся со словарем данных ORACLE,чтобы выяснить,какие поля являются символьными,
цифровыми,а какие - полями дат,чтобы автоматически обеспечить нужные ограниче-
ния на ввод данных.
       Попробуйте ,например,ввести букву в цифровое поле.SQL*Forms не поз-
 волит Вам этого и немедленно выведет предупреждающее сообщение.
  
  SQL*Forms требует,чтобы в цифровое поле вводили только цифры:
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  45k±±±±±±±  ±±±±±±±±±      -
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
                   
     ±±±±Legal characters are 0-9±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  -
       Попробуйте ввести информацию в поле даты.SQL*Forms проверит,допус-
 тима ли введенная Вами дата.В нем есть встроенный календарь,который про-
 веряет все даты,учитывая високосные года.
  
  SQL*Forms не позволит Вам ввести неправильную дату:
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  45±±±±±±±±  31-FEB-88      -
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
                
     ±±±±Day must be between 1 and last of month±±±±±±±±±±±±±±±±±±±±±±±±±±±  -
       
                           Мощная организация запросов
       Итак,Вы уже увидели,как легко SQL*Forms позволяет Вам вводить ин-
  формацию в базу данных.Следующей стадией является получение информации
  назад запрашиванием БД.
       SQL*Forms предлагает подход "Запрос-По-Примеру",благодаря чему но-
  вичкам не приходится учить формальный язык запросов,чтобы вывести данные.
  Чтобы ввести запрос,нажмите функциональную клавишу [ENTER QUERY] (ВВЕСТИ
  ЗАПРОС) и впечатайте Ваши критерии запроса в соответствующие столбцы.Нап-
  ример,чтобы просмотреть список наименований,стОящих больше 30$,надо
  только впечатать ">30" в столбец цены.
  
  легкий ввод запросов,используя подход "Запрос-По-Примеру":
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  >30±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
                                                                        
     ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
                                    ENTER QUERY
 
       SQL*Forms выведет для Вас список наименований,удовлетворяющих Вашему
  критерию:
                   ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  45±±±±±±±±  01-JAN-88
     100890±±±  ACE±TENNIS±NET±±±±±±±±±±±  58±±±±±±±±  15-MAR-88
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
       Вы можете легко комбинировать критерии выбора,впечатывая соответс-
  твующие условия в каждый столбец.Например,чтобы просмотреть все наимено-
  вания изготовленные компанией Ace Tennis,стОящие больше 40$,введите "ACE
  TENNIS%" в столбец описания и ">40" в столбец цены.Знак процента - специ-
  альный знак,обозначающий любой символ или группу символов.*
       
  как легко комбинировать критерии запроса:
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     ±±±±±±±±±  ACE TENNIS%±±±±±±±±±±±±±±  >40±±±±±±±  ±±±±±±±±±       -
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
 
  *) Как знак "*" в MS-DOS (прим.перев.)
       Для случаев,когда Вы хотите ввести очень сложные критерии запроса,
  SQL*Forms расширяет Ваши возможности: Вы можете вводить запросы любой
  сложности,используя всю мощь языка SQL.
       
  используйте стандартный синтаксис SQL для запросов любой сложности:
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     &±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
                                                                        
     ±WHERE±list_price±BETWEEN±35±and±45±AND±effective_date±IS±NULL± ъъъ
                                                  ъъъ  ±ORDER±BY±part_num±±±
                                           
                        Быстрая корректировка данных
       Возможности запросов SQL*Forms позволяют Вам быстро вводить нужные
  данные,а когда Вы имеете эти данные на экране,Вы можете легко изменить
  или откорректировать их.Просто подведите курсор к полю,значение которого
  Вы хотите изменить,и введите новую информацию "поверх" старой.Если Вы
  работаете с бОльшим количеством строк,чем помещается на экран,просто
  прокрутите их вверх или вниз,пока не получите нужную строчку.
        
  корректировать информацию можно,впечатывая новые значения в нужное место:
                   ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  45±±±±±±±±  01-JAN-88
     100870±±±  ACE±TENNIS±BALLS-3±PACK±±  2.8±±±±±±±  01-JAN-88
     100871±±±  ACE±TENNIS±BALLS-6±PACK±±  5.6±±±±±±±  15-MAR-88
     100890±±±  ACE±TENNIS±NET±±±±±±±±±±±  58±±±±±±±±  15-MAR-88
     101860±±±  SP±TENNIS±RACKET±±±±±±±±±  24±±±±±±±±  01-APR-88
     101863±±±  SP±JUNIOR±RACKET±±±±±±±±±  12.5±±±±±±  01-APR-88
 
                        Удаление с помощью одной клавиши
       Если Вы хотите удалить целиком строку данных,поместите курсор в лю-
  бую позицию этой строки и нажмите клавишу [DELETE] (УДАЛИТЬ).
       Если в результате быстрой работы вы сделали ошибку и изменили или
  удалили неправильно,SQL*Forms позволяет Вам легко вернуть все в первона-
  чальный вид - Вы можете подтвердить Ваши изменения или отказаться от них,
  прежде чем SQL*Forms сделает их постоянными.
  
  не волнуйтесь,если удалили что-нибудь случайно,SQL*Forms попросит Вас
  подтвердить Ваши изменения:
                   ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     100860±±±  ACE±TENNIS±RACKET±I±±±±±±  35±±±±±±±±  01-JAN-88
     100861±±±  ACE±TENNIS±RACKET±II±±±±±  45±±±±±±±±  01-JAN-88
     100870±±±  ACE±TENNIS±BALLS-3±PACK±±  2.8±±±±±±±  01-JAN-88
     100871±±±  ACE±TENNIS±BALLS-6±PACK±±  5.6±±±±±±±  15-MAR-88
     100890±±±  ACE±TENNIS±NET±±±±±±±±±±±  58±±±±±±±±  15-MAR-88
     101863±±±  SP±JUNIOR±RACKET±±±±±±±±±  12.5±±±±±±  01-APR-88
     102130±±±  RH:±GUIDE±TO±TENNIS±±±±±±  3.4±±±±±±±  01-APR-88
                   
     ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
     Do you want to commit the changes you have made?±Y±            -
 
          Высокая производительность в многопользовательском режиме
       Всего через несколько минут тренировки Маршалл использует бланк для
  наименований самостоятельно.Он готов не только начать рутинную работу,но
  и готовить других работников инвентарного отдела к работе с бланком без
  Вашей дальнейшей помощи.
       Даже когда весь персонал использует бланк для наименований,SQL*Forms
  поддерживает его высокую производительность.SQL*Forms пользуется возмож-
  ностью ORACLE "запирать" (lock) отдельные строки данных так,что пользова-
  тели бланка могут запрашивать и корректировать строки одной и той же таб-
  лицы без необходимости ждать,пока закончат остальные.В единственном слу-
  чае кому-то придется подождать - если два пользователя будут пытаться
  изменить одну и ту же строку одновременно.
       
  SQL*Forms позволяет одному пользователю менять цены на теннисные ракетки в
  то время,как другой вводит новые цены для мячиков,а третий запрашивает
  все бланки:
                          PART  TABLE
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
    ----------  ------------------------Д  ----------  --------Д
     100860     ACE TENNIS RACKET I        35          01-JAN-88
     100890     ACE TENNIS NET             58          15-MAR-88
     100870     ACE TENNIS BALLS-3 PACK    2.8         01-JAN-88
     100871     ACE TENNIS BALLS-6 PACK    5.6         15-MAR-88
     101863     SP JUNIOR RACKET           12.5        01-APR-88
     102130     RH: GUIDE TO TENNIS        3.4         01-APR-88
     100861     ACE TENNIS RACKET II       45          01-JAN-88
     101863     SP TENNIS RACKET           24          15-MAR-88
 
                                  Обобщение
 
       Пока Вы учили Маршалла использовать бланк для наименований,Вы увиде-
  ли,как SQL*Forms позволяет легко отвечать на требования пользователей:
  Полная безопасность       SQL*Forms проверяет пароль каждого пользователя
                            и выясняет,имеет ли он право на ввод,запрос,
                            изменение или удаление данных.
  Полноэкранные функ-       SQL*Forms автоматически обеспечивает удобные пол-
  циональные средства       ноэкранные средства для:
                             - ввода данных
                             - запроса
                             - изменения
                             - удаления
  Легкость в изучении       SQL*Forms легок в изучении,что позволяет поль-
                            зователям становиться профессионалами после нес-
                            кольких минут инструктирования.
  Высокая продуктив-        Персонал по вводу данных быстро работает с
  ность пользователей       SQL*Forms,потому что они могут вводить,запра-
                            шивать и изменять данные простым впечатыванием
                            в бланк.Другие программные продукты заставляют
                            Вас тратить время,вынуждая "продираться" через
                            меню или переключатели между режимами ввода и из-
                            менения.
  Расширенные возмож-       Пользователи могут легко выполнять даже самые
  ности                     сложные запросы и изменения.
  Автоматический конт-      SQL*Forms автоматически проверяет типы полей,
  роль за ошибками          что дает пользователям возможность исправлять
                            ошибки,прежде чем они попадут в базу данных.
  Высокая эффектив-         Множество пользователей могут использовать одну и
  ность в многопользо-      ту же SQL*Forms-систему одновременно.SQL*Forms
  вательском режиме         пользуется возможностью ORACLE "запирать" отдель-
                            ные строчки данных так,что пользователи банка
                            могут запрашивать и изменять строки одновременно
                            без необходимости ждать,пока закончат остальные.
                            SQL*Forms также обладает эффективной буферизаци-
                            ей для обеспечения быстрого ответа на запрос и
                            быстрой прокрутки вперед и назад запрошенной ин-
                            формации.
       
                       ИЗМЕНЕНИЯ В ФУНКЦИОНИРОВАНИИ БЛАНКОВ
                  Как легко приспособить бланк к Вашим условиям
       В предыдущих главах Вы узнали,как SQL*Forms создает полностью функ-
 циональный бланк для наименований всего за несколько нажатий клавиш.Теперь
 Вы увидите,как можно модернизировать Ваш бланк за несколько минут,чтобы
 он отвечал новым потребностям пользователя - без всякого программирования.
       Поработав немного с бланком для наименований,персонал инвентарного
 отдела лучше осознал свои потребности и предложил добавить к бланку некото-
 рые новые качества.Чтобы уменьшить количество ошибок при вводе,они хотят:
  1.Сделать так,чтобы столбец цены появлялся в стандартном валютном форма-
     те с двумя десятичными знаками.Работники отдела привыкли к такому фор-
     мату,находят его более удобным для восприятия.
  2.Сделать так,чтобы номер наименования всегда вводился для новых наиме-
     нований,а когда он уже введен,не мог быть случайно изменен.
  3.Обеспечить,чтобы описание наименования всегда вводилось в верхнем ре-
     гистре.Такое единообразие облегчит поиск по ключевым словам.
  4.Установить в качестве значения по умолчанию для даты текущую дату.Это
     сократит работу,поскольку почти все изменения цен вступают в силу в тот
     же день,что вводится информация.
  5.Создать вспомогательное пояснение для поля даты,потому что введение дат
     часто затрудняет временных клерков по вводу данных,которые приходят
     ежеквартально обновить информацию.Цель менеджера по инвентарю - свести
     к нулю время на обучение,снабдив бланк самопояснениями.
       Пользуясь возможностями,которые Вам предоставляет SQL*Forms Вы може-
 те внести все эти изменения не более,чем за 15 минут.
       
  поработав с бланком,персонал предложил изменения:
    1 - валютный формат
    2 - обязательный,неизменяемый
    3 - верхний регистр
    4 - по умолчанию
    5 - вспомогательное пояснение
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
     |          |                          |           |  |
     2          3                          1           4  5
     ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
 
       Начните вводить изменения,выбрав действие "MODIFY" (модифицировать).
      Ъ------------------------------Дї
      і         CHOOSE FORM           і
      і Name                          і
      і±PARTFORM±±±±±±±±±±±±±±±±±±±±±±і
      і Ъ----------------------------ДБДї
      і і         CHOOSE BLOCK          і
      і і Name                          і
      АДґ±PART±±±±±±±±±±±±±±±±±±±±±±±±±±і
        і Page Number: ±1±              і
        і Actions:                      і
        і CREATE     MODIFY     DROP    і
        і LIST       FIELDS     DEFAULT і
        і PREVIOUS   NEXT               і
        А------------------------------ДЩ
 
       Редактор экранов SQL*Forms автоматически показывает Вам все поля в их
 обычном расположении.
                  ------------ PART --------------
     PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE
     ±±±±±±±±±  ±±±±±±±±±±±±±±±±±±±±±±±±±  ±±±±±±±±±±  ±±±±±±±±±
 
       С каждым полем связан набор характеристик,которые контролируют уп-
 равление им SQL*Forms.Вы можете изменить эти характеристики с помощью
 окон-меню,получая к ним доступ указанием на поле в редакторе экрана.
 
                                   Изменение 1
                           Изменить формат поля цены
       Первое окно меню позволяет Вам изменить формат и тип данных,установ-
 ленный по умолчанию.Вы можете выбрать из большого количества символьных,
 цифровых типов и типов дат,подводя курсор к нужной позиции.Например,что-
 бы заставить столбец цен появляться в официальном валютном формате,исполь-
 зуйте клавиши управления курсором для изменения типа данных (Data Type) с
 цифрового (Number) на официальный валютный (RMONEY).
 
  Вы можете менять символьные,цифровые и др.типы и форматы при помощи меню:
                  ------------ PART --------------
     Ъ----------------------------------Дї
     і     DEFINE FIELD         Seq #±3± і LIST_PRICE  EFFECTIVE
     і Name:±LIST_PRICE±±±±±±±±±±±±±±±±± і ±±±±±±±±±±  ±±±±±±±±±
     і Data Type:                        і
     і  CHAR    NUMBER   RNUMBER   DATE  і
     і  ALPHA   INT      RINT      JDATE і
     і  TIME    MONEY   *RMONEY    EDATE і
     і Actions:                          і
     і  TRIGGER   ATTRIBUTES   VALIDATIONі
     і  COMMENT   COLUMNS                і
     А----------------------------------ДЩ
 
                                  Изменение 2
               Сделать ввод номера наименования обязательным
       Второе окно меню дает Вам широкий контроль над атрибутами поля.Вы мо-
 жете ,например,указать,разрешаются ли изменения,нулевые вводы,требуются
 ли вводы постоянной длины и большое количество других атрибутов.
       Выберите атрибуты поля просто включением-выключением позиций меню.
 Чтобы потребовать ввода номера наименования и сделать уже введенные номера
 неизменяемыми,вам нужно только включить переключатель Mandatory (Обязатель-
 ный) и выключить Update allowed (Изменения разрешены).
 
  легкий контроль над атрибутами полей:
                  ------------ PART --------------
     Ъ----------------------------------Дї
     і     DEFINE FIELD         Seq #±3± і LIST_PRICE  EFFECTIVE
     і Name:±LIST_PRICE±±±±±±±±±±±±±±±±± і ±±±±±±±±±±  ±±±±±±±±±
     і Data Type:                        і
     і  CHAR    NUMBER Ъ----------------ДБї
     і  ALPHA   INT    іSPECIFY ATTRIBUTESі
     і  TIME    MONEY  і *Database Field  і
     і Actions:        і  Primary Key     і
     і  TRIGGER   ATTRIі                  і
     і  COMMENT   COLUMі *Displayed       і
     А----------------Дґ *Input allowed   і
                       і *Query allowed   і
                       і  Update allowed  і
                       і  Update if NULL  і
                       і  Fixed Length    і
                       і *Mandatory       і
                       і  Uppercase       і
                       і  Autoskip        і
                       і  Automatic help  і
                       і  No echo         і
                       А------------------Щ
 
                                  Изменение 3
                    Перевести поле описания в верхний регистр
       Теперь Вы хотите обеспечить,чтобы описание наименования всегда вво-
 дилось в верхнем регистре.Чтобы сделать это,включите атрибут Uppercase
 (Верхний регистр).Теперь SQL*Forms автоматически преобразует все описания
 из нижнего регистра в верхний.
 
                                  Изменение 4
                   Установить значение по умолчанию для даты
        SQL*Forms дает Вам полный контроль над присвоением значений полям.В
 окне контроля над присвоением значений Вы можете указать значение по умол-
 чанию,верхние и нижние границы допустимого интервала и другие критерии.
 Чтобы присвоить дате в качестве значения по умолчанию текущую системную да-
 ту,введите системную переменную $$DATE$$.
       
  установление значения по умолчанию и критериев присвоения значений:
                  ------------ PART --------------
     Ъ----------------------------------Дї
     і     DEFINE FIELD         Seq #±4± і LIST_PRICE  EFFECTIVE
     і Name:±EFFECTIVE_DATE±±±±±±±±±±±±± і ±±±±±±±±±±  ±±±±±±±±±
     і Ъ--------------------------------------Дї
     і і          SPECIFY VALIDATION           і
     і і Field Length ±9±     Query Length ±9± і
     і і Copy Field Value frim:                і
     і і     Block ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
     і і     Field ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
     і і   Default ±$$DATE$$±±±±±±±±±±±±±±±±±± і   -
     АДґ Range Low ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і      High ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і List of Values:                       і
       і     Table ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і    Column ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і Help:                                 і
       і ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       А--------------------------------------ДЩ
 
                                  Изменение 5
               Написать вспомогательное пояснение для поля даты
       То же самое окно-меню позволяет Вам написать пояснение для каждого
 поля.Вы можете использовать его,чтобы объяснить назначение поля или ука-
 зать требуемый формат для ввода.Вы можете также сообщить SQL*Forms,когда
 выводить пояснение - в любом случае входа пользователя в поле или только
 когда он нажимает клавишу help (помощь).
  
  создание пояснений:
                  ------------ PART --------------
     Ъ----------------------------------Дї
     і     DEFINE FIELD         Seq #±4± і LIST_PRICE  EFFECTIVE
     і Name:±EFFECTIVE_DATE±±±±±±±±±±±±± і ±±±±±±±±±±  ±±±±±±±±±
     і Ъ--------------------------------------Дї
     і і          SPECIFY VALIDATION           і
     і і Field Length ±9±     Query Length ±9± і
     і і Copy Field Value frim:                і
     і і     Block ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
     і і     Field ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
     і і   Default ±$$DATE$$±±±±±±±±±±±±±±±±±± і
     АДґ Range Low ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і      High ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і List of Values:                       і
       і     Table ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і    Column ±±±±±±±±±±±±±±±±±±±±±±±±±±± і
       і Help:                                 і
       і ±Enter±the±date±on±which±this±price±± і   -
       і ±becomes±effective±±±±±±±±±±±±±±±±±±± і
       А--------------------------------------ДЩ
 
                  Еще одно изменение: добавление нового поля
       Теперь Вы воплотили все изменения,запрошенные персоналом и увидели,
 как легко контролировать характеристики существующих полей.
       Добавление нового поля не сложнее.Когда Вы показали бланк менеджеру
 по маркетингу,Вы поняли,что менеджер по инвентарю забыл сказать Вам о по-
 литике,ограничивающей снижение цен.Вы должны добавить новый столбец для
 минимальной цены,ниже которой компания не может оценить данное наименование.
       Первым шагом будет добавление нового поля к существующему определению
 БД.ORACLE позволяет это сделать при помощи лишь одного оператора
 SQL:
     ALTER TABLE part ADD (minprice NUMBER);
       
       Теперь,используя редактор экранов SQL*Forms,отметьте место на экра-
 не,куда Вы хотите поместить новое поле,и нажмите клавишу [CREATE FIELD].
 SQL*Forms запросит у Вас имя и тип нового поля.
 
  добавление нового поля отметкой его положения на экране (1) и указанием его
  имени и типа (2):
                   ------------ PART --------------
      Ъ----------------------------------Дї
      і     DEFINE FIELD         Seq #±5± і LIST_PRICE  EFFECTIVE
  1 - і Name:±MIN_PRICE±±±±±±±±±±±±±±±±±± і ±±±±±±±±±±  ±±±±±±±±±
      і Data Type:                        і
      і  CHAR    NUMBER   RNUMBER   DATE  і
      і  ALPHA   INT      RINT      JDATE і
      і  TIME    MONEY   *RMONEY    EDATE і  - 2
      і Actions:                          і
      і  TRIGGER   ATTRIBUTES   VALIDATIONі
      і  COMMENT   COLUMNS                і
      А----------------------------------ДЩ
 
       Вот и все,что требуется для добавления поля к бланку.Традиционные
 языки программирования потребовали бы от Вас ручного изменения всех прог-
 раммных фрагментов,ссылающихся на новое поле - драйверов экранов,подпрог-
 рамм проверки значений,ввода,запроса,изменения и удаления данных.
 SQL*Forms заботится обо всем этом автоматически.
 
                                  Обобщение
       Наконец Вы закончили создание бланка для наименований.Всего за несколь-
ко минут Вы включили в систему все изменения,предложенные персоналом по инвен-
тарю,так же как и неожиданное требование менеджера по маркетингу добавить но-
вое поле.Теперь бланк для наименований готов для ввода данных о продукции.
                  ------------ PART --------------
   PART_NUM   DESCRIPTION                LIST_PRICE  EFFECTIVE  MIN_PRICE
   100860±±±  ACE±TENNIS±RACKET±I±±±±±±  ±±±±±35.00  01-JAN-88  ±±±±±30.00
   100861±±±  ACE±TENNIS±RACKET±II±±±±±  ±±±±±45.00  01-JAN-88  ±±±±±40.00
   100870±±±  ACE±TENNIS±BALLS-3±PACK±±  ±±±±±±2.80  01-JAN-88  ±±±±±±2.25
   100871±±±  ACE±TENNIS±BALLS-6±PACK±±  ±±±±±±5.60  15-MAR-88  ±±±±±±5.60
   100890±±±  ACE±TENNIS±NET±±±±±±±±±±±  ±±±±±58.00  15-MAR-88  ±±±±±51.50
   101860±±±  SP±TENNIS±RACKET±±±±±±±±±  ±±±±±24.00  15-MAR-88  ±±±±±22.00
   101863±±±  SP±JUNIOR±RACKET±±±±±±±±±  ±±±±±12.50  01-APR-88  ±±±±±10.00
                   
   ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
 
       Вы видели,как SQL*Forms предоставляет Вам контроль над атрибутами
 бланка.Вы можете внести существенные изменения в бланк без программирова-
 ния.Используя только меню и накладывающиеся окна Вы можете:
  - Менять символьные,цифровые и другие типы и форматы с помощью меню
  - Устанавливать значения по умолчанию и критерии присвоения значений полям
  - Писать специфичные для каждого поля пояснения,которые делают бланк "са-
    мопоясняющим"
  - Добавлять новые поля.
       Легкость внесения этих изменений позволяет Вам быстро отвечать на те-
 кущие требования.
 
                               ОФОРМЛЕНИЕ ЭКРАНОВ
       Как сделать так,чтобы бланк покупателя выглядел так,как Вы хотите
       Теперь,когда вы закончили бланк для описания,Вы готовы к созданию
 новой части Вашей системы ввода заказов,бланка покупателя.
       Вы будете работать напрямую с Крисом Эндрюсом,менеджером по продаже.
 Эндрюс имеет вполне определенные мнения о внешнем виде и функциональности
 бланка,но он потратил немало времени,чтобы точно сформулировать,что он
 хочет в первую очередь.
       Эндрюс прав,когда говорит,что внешний вид критичен для удачной ПС.
 Бланки должны быть более чем функциональны - они должны быть ясными и прият-
 ными на вид.
       SQL*Forms позволяет Вам быстро менять как функционирование,так и
 внешний вид бланков.Скорость разработки ПС с помощью SQL*Forms позволяет
 Вам работать напрямую с конечными пользователями,создавая бланки,которые
 функционируют и смотрятся как надо.
 
               Прототип бланка,предложенный менеджером по продаже
       Первым делом надо договориться о содержании столбцов,а потом создать
 таблицу CUSTOMER (покупатель):
 
      CREATE TABLE customer
             (customerid                      NUMBER,
             name                             CHAR (25),
             address                          CHAR (25),
             city                             CHAR (20),
             state                            CHAR (2),
             area                             NUMBER (3),
             phone                            NUMBER (7),
             creditlmt                        NUMBER (7,2));
      Теперь Вы с Эндрюсом готовы создать бланк по умолчанию в качестве фун-
 дамента,оформить экран для эффектного внешнего вида,а потом отрегулиро-
 вать функционирование бланка.
 
 Шаг 1
          Использование бланка по умолчанию как отправной точки
       Начните с приказания SQL*Forms автоматически создать бланк по умолча-
 нию для таблицы CUSTOMER.Всего за одну минуту Вы указываете имя бланка и
 таблицы,на которой он базируется.
   
  определение бланка по умолчанию (1 минута):
      Ъ------------------------------Дї
      і         CHOOSE FORM           і
      і Name                          і
      і±CUSTFORM±±±±±±±±±±±±±±±±±±±±±±і
      і Ъ----------------------------ДБДї
      і і         CHOOSE BLOCK          і
      і і Name                          і
      АДґ±CUSTOMER±±±±±±±±±±±±±±±±±±±±±±і
        і Page Number:±1±               і
        і Ъ----------------------------ДБ----------ї
        і і             DEFAULT BLOCK              і
        і і Table Name:                            і
        і і±CUSTOMER±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±і
        АДґ Rows Displayed:±1±                     і
          і      Base Line:±1±                     і
          і Actions:                               і
          і      COLUMNS      TABLES               і
          А----------------------------------------Щ
       
       SQL*Forms генерирует бланк по умолчанию,который Вы с Эндрюсом можете
 использовать как отправную точку.
  
  SQL*Forms создает для Вас бланк по умолчанию:
                  ---------- CUSTOMER --------------
       CUSTID ±±±±±±±±±
         NAME ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ADDRESS ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         CITY ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
        STATE ±±                                 ZIP ±±±±±±±±±±±±±±±
         AREA ±±±±±                            PHONE ±±±±±±±±±±±±±±±
        REPID ±±±±±±                       CREDITLMT ±±±±±±±±±±±±±±±±±
 
 Шаг 2
              Оформление экрана для создания эффектного внешнего вида
       Теперь используйте редактор экранов SQL*Forms,чтобы улучшить внешний
 вид бланка.Это настолько быстрая процедура,что Вы можете эффективно рабо-
 тать на пару с Эндрюсом,делая бланк наиболее удобным для группы продажи.
       Первое предложение Эндрюса - изменить подсказки по умолчанию
 "Customerid" на "Code" и "Creditlmt" на "Credit limit",и все остальные
 подсказки на смешанный верхний и нижний регистр.SQL*Forms позволяет Вам
 легко менять текст.Требуется только использовать клавиши управления курсо-
 ром для передвижения по экрану и печатать что угодно и где угодно.
 
  добавьте или измените описательный текст простым печатанием на экране
  (10 минут):
                  ---------- CUSTOMER --------------
         Code ±±±±±±±±±
         Name ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      Address ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         City ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
        State ±±                                 Zip ±±±±±±±±±±±±±±±
         Area ±±±±±                            Phone ±±±±±±±±±±±±±±±
       Rep ID ±±±±±±                    Credit Limit ±±±±±±±±±±±±±±±±±
 
       Теперь Эндрюс просит Вас передвинуть поле ограничения кредита в верх-
 нюю строку справа от поля "Code",код штата и почтовый индекс - на ту же
 строку,что и город,а код зоны и телефон - близко друг к другу.
  
  передвижение любой части экрана простым указанием и использованием функций
  CUT (вырезать) и PASTE (приклеить):
       
                  ---------- CUSTOMER --------------
         Code ±±±±±±±±±                     Credit Limit ±±±±±±±±±±±±±±±±±
         Name ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      Address ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         City ±±±±±±±±±±±±±±±±±±±±±±±±±±±±  State ±±   Zip ±±±±±±±±±±±±±±±
         Area ±±±±±      Phone ±±±±±±±±±±±±±±±
       Rep ID ±±±±±±
 
       SQL*Forms позволяет Вам передвигать эти поля по экрану с замечатель-
 ной легкостью.Просто отметьте,что Вам нужно передвинуть - поле или любую
 бОльшую область экрана - и используйте простые функции [CUT] и [PASTE],
 чтобы передвинуть ее.На изменения уходят секунды,а если вы сделали ошибку
 или Вам не нравится результат,Вы всегда можете вернуть все в прежнее сос-
 тояние клавишей [UNDO] (отменить действие).С SQL*Forms Вы можете сделать
 экран таким,как Вы хотите,не теряя времени на выверение в длинных прог-
 раммах расположения пробелов и табуляций.
       Последним требованием Эндрюса является введение рамок,чтобы зритель-
 но отделить друг от друга разные части бланка.И в который раз SQL*Forms
 позволяет Вам выполнить задание с легкостью.Только укажите на два угла
 прямоугольника и нажмите клавишу [DRAW BOX/LINE].
                              
 
  чтобы нарисовать прямоугольник,укажите на углы и нажмите функциональную
  клавишу:
   Ъ----------------------------Д CUSTOMER --------------------------------Дї
   і     Code ±±±±±±±±±                     Credit Limit ±±±±±±±±±±±±±±±±±  і
  -Г------------------------------------------------------------------------ґ
   і     Name ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±             і
   і  Address ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±                        і
   і     City ±±±±±±±±±±±±±±±±±±±±±±±±±±±±  State ±±   Zip ±±±±±±±±±±±±±±±  і
   і     Area ±±±±±      Phone ±±±±±±±±±±±±±±±                              і
   і   Rep ID ±±±±±±                                                        і
   А------------------------------------------------------------------------Щ
 
 Шаг 3
 Завершение работы с бланком покупателя - изменение атрибутов полей (15 минут)
       Теперь,когда внешний вид бланка радует вас с Эндрюсом,Вы готовы по-
 работать над его функциональностью.Эндрюс,который,как и большинство
 пользователей,небрежно относится к техническим заданиям,обеспечит Вам эф-
 фективную обратную связь после того,как увидит бланк в действии.
       Пока вы с Эндрюсом работали с бланком,Вы нашли несколько способов
 улучшить его.Это изменения того же типа,что и те,которые вы внесли в
 бланк наименований в предыдущей главе:
  - Чтобы сделать списки покупателей единообразными,SQL*Forms должен обес-
    печить введение имен покупателей только в верхнем регистре.Просто вклю-
    чите переключатель Uppercase в окне Attributes (атрибуты).
  - Поскольку большинство покупателей находятся в зоне Денвера,поле штата
    должно иметь значение по умолчанию "CO",а код зоны - 303.Впечатайте
    эти значения в окно Validation (присвоение значений).
  - Ограничения кредита должны выводиться как валюта.Измените тип с NUMBER
    на RMONEY.
  - Чтобы укоротить обучение пользователя,каждое поле должно иметь свое
    поясняющее сообщение.Просто впечатайте соответствующее сообщение в на-
    кладывающееся окно каждого поля.
 
                                    Обобщение
       После внесения этих изменений,вы с Эндрюсом решили,что бланк работает
нормально.Ваш бланк покупателя готов к использованию персоналом по продаже.
       Разработка бланка совместно с Эндрюсом прошла успешно,потому что он
 выражал свои потребности намного яснее,чем если бы писал техническое зада-
 ние.И,во-вторых,поскольку он участвовал в процессе разработки,ему,не-
 сомненно,нравится результат.
 Создание эффективных       С SQL*Forms процесс создания прототипов эффекти-
 бланков за минуты          вен потому,что Вы можете внести изменения очень
                            быстро.
                             1.Вы начинаете с бланка по умолчанию,который
                            SQL*Forms создает автоматически за 1 минуту.
                             2.Потом Вы заставляете бланк выглядеть именно
                            так,как Вам хочется при помощи редактора экра-
                            нов SQL *Forms.
                               - Добавляете или изменяете описательный текст
                                 простым печатанием на экране
                               - Двигаете любую часть экрана указанием места
                                 и использованием функций SQL*Forms [CUT] и
                                 [PASTE]
                               - Рисуете линии и прямоугольники,чтобы зри-
                                 тельно разделить экран
                             3.И в итоге Вы заставляете бланк работать
                            именно так,как Вам нужно,модифицируя его функ-
                            ционирование через накладывающиеся меню и окна.
       Когда Вы закончили вносить изменения,Ваша ПС готова,потому что Ваши
 SQL*Forms-прототипы и есть Ваша ПС.SQL*Forms совмещает в себе гибкость па-
 кетов,основанных на прототипах,с большими возможностями,для которых в
 обычных случаях Вам требуются специально написанные программы.
                                  
                          ОВЛАДЕНИЕ СИЛОЙ SQL*Forms
                    Создание сложного бланка ввода заказов
       В процессе создания бланков наименований и покупателя Вы увидели мно-
 го преимуществ подхода SQL*Forms.Вы можете разрабатывать законченные ПС,
 полностью контролировать атрибуты полей и создавать привлекательные на вид
 экраны - все это без программирования.А поскольку модификация бланка так
 легка,Вы сможете усвоить гибкий стиль разработки,который включает созда-
 ние прототипов и позволяет Вам приспосабливаться к нуждам пользователей.
       В этой главе Вы разработаете наиболее сложную часть Вашей ПС - бланк
 ввода заказов.Вы увидите,как SQL*Forms не только предлагает продуктив-
 ность разработки и гибкость,но и дает Вам силу,обыкновенно достигаемую
 только средствами традиционного программирования.
       Чтобы дать Вам все возможности электронных бланков без программирова-
 ния,SQL*Forms использует набор правил по умолчанию для выполнения всех
 стандартных функций бланка.Например,SQL*Forms следует правилам по умолча-
 нию,когда Вы вводите данные в поле.Он проверяет ,соответствуют ли данные
 указанному типу и не превышают ли они максимальной длины поля.Потом он пе-
 ремещает курсор в следующее поле.Когда Вы закончите вводить данные,
 SQL*Forms автоматически выполняет необходимую операцию: вставку или замену
 в базе данных ORACLE.
       Окна-меню позволяют Вам устанавливать правила,которым будет следо-
 вать SQL*Forms.Используя эти меню,Вы можете ,например,заставить
 SQL*Forms убеждаться ,что поле не оставлено пустым или проверять,входит
 ли данное значение в указанный диапазон.
       Для бланков наименований и покупателей,как и для большинства других
 ПС,окна-меню SQL*Forms полностью дают Вам необходимый контроль.Вы можете
 заставить бланки работать как Вам надо только с их помощью.
       Но что,если Вам нужно разработать сложную ПС,которая требует больше
 контроля,чем позволяют меню? Что,например,если Вы хотите,чтобы Ваша ПС
 пропускала поле,если пользователь введет определенное значение в предыдущее
 поле? Или если Вы хотите переопределить функциональную клавишу? Или ввести
 сложную логику для координации многошаговых взаимодействий с участием мно-
 гочисленных таблиц?
       
                 Открытая архитектура гарантирует Вам успех.
       SQL*Forms обладает открытой архитектурой,которая позволяет Вам реа-
 лизовать эти изменения и даже больше.Вы обладаете средствами,чтобы выпол-
 нить любую работу,вне зависимости от ее сложности.
       SQL*Forms позволяет Вам делать то,что Вы хотите,предоставляя воз-
 можность указывать исключения из правил по умолчанию.Всегда,когда Вам
 нужно,чтобы Ваша ПС выполнила нечто особое,Вы можете нарушить эти прави-
 ла.Если,например,Вам нужно произвести специальную опреацию присвоения
 значения полю,когда пользователь его изменяет,SQL*Forms позволяет Вам до-
 бавить необходимые команды.
  - Вы можете определить процедурные макросы,которые контролируют поведение
    бланка.Так Вы можете перескакивать через поле,если справедливо некото-
    рое условие,координировать сложные взаимодействия,организовывать ветв-
    ление на новые бланки и даже выполнять команды операционной системы.
  - Вы можете использовать операторы SQL для ввода запроса,замены или уда-
    ления строк в любой таблице БД,а не только в находящейся в
    данный момент на экране.Вы также можете сортировать и суммировать дан-
    ные или производить сложные вычмсления над символьными и цифровыми поля-
    ми,а также полями дат.
  - Наконец,Вы можете включить в ПС любую из Ваши существующих программ.Вы
    можете переходить к подпрограммам на КОБОЛЕ,Си,Фортране и других основ-
    ных языках программирования.
       Открытая архитектура SQL*Forms позволяет добавить к Вашей ПС качест-
 ва,невозможные с любой другой (непроцедурной) системой разработки.А если
 бы Вы попытались создать всю ПС на языке программирования - хотя бы и 4-го
 поколения - Вы бы потратили массу времени,программируя базовый функцио-
 нальный скелет,прежде чем даже смогли бы приступить к добавлению каких-ли-
 бо специальных функций.
       Подход SQL*Forms уникален в том смысле,что Вы можете начать с пол-
 ностью функционального скелета из правил,которые автоматически предлагает
 SQL*Forms,а потом приспособить бланк,как Вам угодно.И поскольку Вы ука-
 зываете только исключения,а не весь набор правил,Вы выполняете только ма-
 лую часть работы,которая бы потребовалась на разработку целой ПС путем
 программирования.
 
                 Разработка сложного бланка ввода заказов
       Посмотрите теперь,как Вы можете эксплуатировать силу SQL*Forms для
 разработки бланка ввода заказов последней части Вашей ПС.Этот бланк вклю-
 чает две основные таблицы: ORDER (заказ) и LINEITEM (предмет).Также он
 включает ссылки на таблицы CUSTOMER и PART.
     Ъ------------------------------------------------------------ї
     і                     Бланк ввода заказов                    і
     і    Ъ----------ї                            Ъ------Дї       і
     і    і LINEITEM і  --------------------------ґ ORDER і       і
     і    А----------Щ                            А------ДЩ       і
     А--------ДЕ--------------------------------------Е----------ДЩ
          Ъ----Б----Дї                           Ъ----Б----Дї
          і   PART   і                           і CUSTOMER і
          А----------Щ                           А----------Щ
       В спорах с Эндрюсом,Вы согласились,что бланку требуются некоторые
 качества в дополнение к атрибутам,которые Вы указали в предыдущих главах.
          Ъ------------------------ДORDER--------------------------ї
          іOrder No.  ±615±                  Date     ±01-FEB-87± і
          іCust Code   ±107±                  Name ±WOMENS±SPORTS± і
          іOrder Total ±±±±±±±±±710±          Sales Code ±13±±±±±± і
          іCheck Total ±±±±±±±±±710±          Commission ±S±       і
          іStatus Msg  ±Shipped±on±time±      Shipdate ±06-FEB-87± і
          А--------------------------------------------------------Щ
  Ъ--------------------------ДORDER LINE ITEMS------------------------------Дї
  і                                                                          і
  іItem Product Product                 STD        Actual          Item      і
  іNo. Code    Description             Price      Price      Qty  Total     і
  і±1±± ±100861 ACE±TENNIS±RACKET±II±±± ±±±±±50.00 ±±±±±45.00 ±±10 ±±±±450.00і
  і±2±± ±100870 ACE±TENNIS±BALLS-3±PACK ±±±±±±3.40 ±±±±±±2.80 ±100 ±±±±280.00і
  і±3±± ±100871 ACE±TENNIS±BALLS-6±PACK ±±±±±±5.00 ±±±±±±5.00 ±±50 ±±±±250.00і
  і±±±± ±±±±±±± ±±±±±±±±±±±±±±±±±±±±±±± ±±±±±±±±±± ±±±±±±±±±± ±±±± ±±±±±±±±±±і
  А--------------------------------------------------------------------------Щ
                                                                              
                                Бланк должен:
 1.Удостоверяться в наличии кода покупателя в таблице CUSTOMER.Бланк должен
 также находить и выводить на экран имя покупателя всегда,когда пользова-
 тель вводит его код.
 2.Удостоверяться в наличии номера наименования в таблице PART и выводить
 описание и цену наименования всегда,когда пользователь вводит его номер.
 3.Удостоверяться в том,что пользователи вводят правильные значения комис-
 сионного плана.
 4.Подсчитывать сумму по каждому наименованию (цена * количество) и сумму
 всех наименований,чтобы удостовериться,что общая сумма заказа ей соот-
 ветствует.
 5.Автоматически генерировать следующий по списку номер для каждого нового
 введенного заказа и для каждого нового предмета.
 6.Позволять оператору вызывать бланк покупателя напрямую из бланка ввода
 заказов так,чтобы вспомогательная информация о новом покупателе могла быть
 введена вместе с его первым заказом.
 7.Синхронизировать отображение на экране заказов с отображением информации
 о соответствующих предметах.
 
               Начните с создания бланка по умолчанию (1 минута).
       Первым шагом в создании бланка является использование команды
 SQL*Forms DEFAULT,чтобы сгенерировать обе части бланка (заголовок заказа и
 детальную информацию о конкретном предмете).SQL*Forms позволяет Вам вклю-
 чать в бланк сколько угодно таблиц.Вы даже можете "перелистывать" множест-
 венные страницы экрана,если у Вас кончилось место на первой странице Ваше-
 го бланка.
       Теперь оформите экран и отрегулируйте все атрибуты полей (20 минут).
       Сейчас,как и в предыдущих главах,Вы будете использовать экранный
 редактор SQL*Forms,чтобы привести в порядок внешний вид Вашего бланка и
 окна-меню - для установки атрибутов полей.Функциональные изменения,кото-
 рые Вы внесете,просты:
  - Изменение формата вывода некоторых полей.
  - Вывод текущей даты как значения по умолчанию для поля даты.
  - Сокращение выводимой длины поля сообщения о статусе,чтобы это поле не
    занимало так много места в бланке.SQL*Forms все же позволяет пользова-
    телю вводить значения полной длины путем горизонтальной прокрутки поля
    по мере ввода.
       Теперь Вы имеете базу,на основе которой можно наделить бланк более
 сложными функциями.
          Ъ------------------------ДORDER--------------------------ї
          іOrder No.  ±±±±±                  Date     ±08-JAN-88± і
          іCust Code   ±±±±±                  Name ±±±±±±±±±±±±±±± і
          іOrder Total ±±±±±±±±±±±±±          Sales Code ±±±±±±±±± і
          іCheck Total ±±±±±±±±±±±±±          Commission ±±±       і
          іStatus Msg  ±±±±±±±±±±±±±±±±±      Shipdate ±±±±±±±±±±± і
          А--------------------------------------------------------Щ
  Ъ--------------------------ДORDER LINE ITEMS------------------------------Дї
  іItem Product Product                 STD        Actual          Item      і
  іNo. Code    Description             Price      Price      Qty  Total     і
  і±±±± ±±±±±±± ±±±±±±±±±±±±±±±±±±±±±±± ±±±±±±±±±± ±±±±±±±±±± ±±±± ±±±±±±±±±±і
  і±±±± ±±±±±±± ±±±±±±±±±±±±±±±±±±±±±±± ±±±±±±±±±± ±±±±±±±±±± ±±±± ±±±±±±±±±±і
  А--------------------------------------------------------------------------Щ
 
        Определите Ваши специальные функции (1 час).
        SQL*Forms приготовил скелет для бланка ввода заказов.Он сделал всю
 основную работу за Вас,поэтому добавление функций,затребованных Эндрюсом,
 не займет много времени.
                                       
                                   Функция 1
           Обеспечение наличия кодов покупателей и вывод их имен
       SQL*Forms позволяет Вам обеспечить единство Ваших данных путем про-
 верки полей в любой таблице БД.Чтобы удовлетворить первое требо-
 вание Эндрюса - заставить ПС удостоверяться,что пользователь ввел допусти-
 мый код покупателя - Вы должны ввести всего один оператор SQL.Этот опера-
 тор запрашивает таблицу CUSTOMER,чтобы убедиться в наличии кода покупате-
 ля:
      SELECT *
      FROM customer
      WHERE customer.customerid = :orders.customerid
      
      Эндрюс также хочет,чтобы SQL*Forms автоматически выводил имя покупа-
 теля,когда пользователь вводит его код.Для этого требуется только неболь-
 шое добавление к этому оператору SQL:
      SELECT name
      INTO orders.name
      FROM customer
      WHERE customer.customerid = :orders.customerid
 
       Эндрюс хочет,чтобы SQL*Forms проверял допустимость содержимого поля
 и выполнял просмотр всегда,когда пользователь вводит или изменяет код по-
 купателя.Поэтому Вам нужно проинструктировать SQL*Forms,чтобы он включал
 оператор SQL,который Вы только что написали всегда,когда изменяется поле.
 Это займет всего несколько секунд работы в окне-меню Trigger.
 
 
  используйте SQL для обеспечения проверок допустимости и просмотров:
          Ъ------------------------ДORDER--------------------------ї
  Ъ------ДБ--------------------------Дї                            і
  і       DEFINE FIELD      Seq # ±2± і       Date     ±±±±±±±±±±± і
  і Name ±CUSTID±±±±±±±±±±±±±±±±±±±±± і                            і
  і Ъ------------------------------Дї і       Name ±±±±±±±±±±±±±±± і
  і і      CHOOSE TRIGGER           і і                            і
  і і Name                          і і       Sales Code ±±±±±±±±± і
  і і ±POST-CHANGE±±±±±±±±±±±±±±±±± і і                            і
  ГДБ------------------------------ДБДБ----------------------------Б--------Дї
  і Seq # ±1±       TRIGGER STEP       Label±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±SELECT±name±INTO±:order.name±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±FROM±customer±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±WHERE±customer.custid±=±:order.custid±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і  Message if trigger step fails:                                          і
  і ±You±entered±an±invalid±customer±code.±Please±try±again.±±±±±±±±±±±±±±±± і
  і  Actions:                                                                і
  і     CREATE        COPY          DROP          ATTRIBUTES       COMMENT   і
  і     FORWARDS      BACKWARD      PREV STEP     NEXT STEP                  і
  А--------------------------------------------------------------------------Щ
       Теперь всегда,когда пользователь вводит код покупателя SQL*Forms бу-
 дет автоматически проверять его допустимость.Если он допустим,SQL*Forms
 выведет имя покупателя.В противном случае SQL*Forms выдаст пользователю
 предупреждение и потребует скорректировать ввод.Заметьте,что Вы можете
 написать сообщение,объясняющее пользователям ошибку.
 
                                    Функция 2
                         Проверка номеров наименований
       Проверка,которую Вы определяете для номера наименований,включающая
 в себя выяснение,введен ли номер пользователем и последующее автоматичес-
 кое выведение на экран описания наименования и его стандартную цену,уста-
 навливается аналогично:
          Ъ------------------------ДORDER--------------------------ї
  Ъ------ДБ--------------------------Дї                            і
  і       DEFINE FIELD      Seq # ±2± і       Date     ±±±±±±±±±±± і
  і Name ±PART_NUM±±±±±±±±±±±±±±±±±±± і                            і
  і Ъ------------------------------Дї і       Name ±±±±±±±±±±±±±±± і
  і і      CHOOSE TRIGGER           і і                            і
  і і Name                          і і       Sales Code ±±±±±±±±± і
  і і ±POST-CHANGE±±±±±±±±±±±±±±±±± і і                            і
  ГДБ------------------------------ДБДБ----------------------------Б--------Дї
  і Seq # ±1±       TRIGGER STEP       Label±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±SELECT±description,±list_price±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±INTO±:lineitems.description,±:lineitems.list_price±±±±±±±±±±±±±±±±±±±±± і
  і ±FROM±part.part.num±=±:lineitems.partnum±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± і
  і  Message if trigger step fails:                                          і
  і ±You±entered±an±incorrect±product±number.±Please±try±again.±±±±±±±±±±±±± і
  і  Actions:                                                                і
  і     CREATE        COPY          DROP          ATTRIBUTES       COMMENT   і
  і     FORWARDS      BACKWARD      PREV STEP     NEXT STEP                  і
  А--------------------------------------------------------------------------Щ
 
                                 Функция 3
                   Проверка поля комиссионного плана
       Вы можете использовать SQL не только для просмотра таблиц базы дан-
 ных,но и для выполнения условной проверки любого типа.Для Вашей следующей
 функции,например,Вы должны удостовериться,что пользователи ввели допус-
 тимые значения для комиссионного расписания - "S" для предметов на распро-
 дажу,либо "R" для предметов с твердой ценой.Для выполнения любой условной
 проверки Вы можете использовать выражение SQL WHERE:
       
      WHERE :commplan IN ('S','R')
 
       Конечно,проверка может быть значительно сложнее.В Вашем распоряжении
 имеется вся мощь SQL с его строчными,арифметическими и логическими функция-
 ми,а также функциями над датами.
 
                                   Функция 4
                    Выполнение вычислений над полями экрана
       Вы также можете использовать SQL для выполнения вычислений над полями
 экрана или БД.Чтобы подсчитать итоговую цену для каждого предмета
 как произведение количества на цену одного предмета,Вам нужно только напи-
 сать один арифметический оператор,который SQL*Forms выполнит автоматически
 всегда,когда будет меняться значение количества или цены:
      
      SELECT :quantity * :price INTO totalprice
 
       SQL*Forms позволяет Вам выполнять и более сложные вычисления.Напри-
 мер,чтобы ,что оператор не сделал ошибки ввода,сравните общую сумму за-
 каза с суммой общих сумм предметов.Если они не равны,предупредите опера-
 тора сообщением.
 
                                   Функция 5
                   Генерирование последовательных номеров заказов
       Поскольку Вы можете вычмслять номера,Вы можете использовать базу дан-
 ных ORACLE для слежения за присвоением значений номерам заказов и для авто-
 матического присвоения нового номера каждому новому вводимому оператором
 заказу.Два связанных оператора SQL выполнят эту работу:
      
      UPDATE order sequence
      SET order num = order num + 1
      
      SELECT order num INTO orders.orderid
 
                                   Функция 6
                 Вызов бланка покупателя из бланка заказов
       Чтобы воспользоваться некоторыми функциями бланка Вы,возможно захо-
 тите контролировать "самое сердце" механизма SQL*Forms.Вызов одного бланка
 из другого - как раз тот самый случай.Когда новый покупатель делает свой
 первый заказ,персонал по продаже захочет ввести этот заказ перед базовой
 информацией о покупателе.При этом возникнут трудности,поскольку для новых
 покупателей необходимо присвоение значений полю кода,прежде чем их заказы
 могут быть обработаны.
       SQL*Forms решает эту проблему,позволяя Вам вызвать бланк покупателя
 из бланка ввода заказов.Если оператору требуется ввести базовую информацию
 о новом покупателе во время обработки заказов,он может перейти к бланку
 покупателя нажатием одной клавиши.Когда он закончит вводить данные о поку-
 пателе,он автоматически вернется в бланк ввода заказов.Простой,состоящий
 из трех слов макрос,осуществляет эту функцию ветвления:
      
      #exemacro call custform;
 
                                   Функция 7
     Автоматическое связывание заглавной информации о заказе с деталями
                          об отдельных предметах
     Макросы могут также быть полезны для координации таблиц ORDER и LINEITEM.
Информация из 2-х частей бланка ввода данных д.б. синхронизирована; информация
об отдельных предметах,выведенная в нижней части бланка,всегда должна соответ-
ствовать заглавной информации о заказе,выведенной в верхней части.Макросы
SQL*Forms позволяют Вам синхронизировать таблицы ORDER и LINEITEM в соответст-
вии с Вашими конкретными потребностями.Хотите ли Вы,чтобы информация о предме-
тах была удалена,если удаляется соответствующая им заглавная информация о за-
казе? Хотите ли Вы разрешить запрашивание информации об отдельных предметах,
независимо от заголовков? С SQL*Forms,у Вас есть выбор.
                                         
                                   Обобщение
       Вы завершили разработку Вашего бланка ввода заказов - последней части
 Вашей ПС.Вы увидели,как с помощью SQL*Forms можно эффективно создавать
 очень сложную ПС.
       Вы создали бланк ввода заказов быстро,потому что SQL*Forms сделал за
 Вас большую часть работы,сгенерировав бланк по умолчанию.Все,что Вам
 потребовалось,чтобы добавить новые функции,это ведение специальных инс-
 трукций по обработке информации "на вершину" фундамента SQL*Forms.Вместо
 программирования всех функций бланка,Вам пришлось уточнить только те об-
 ласти,где Вам потребовались исключения из правил по умолчанию SQL*Forms.
 
  бланк ввода заказов в окончательном варианте полностью удовлетворяет
  Вашим потребностям:
 1 - генерируется последовательный номер заказа
 2 - удостоверяется наличие правильного кода покупателя
 3 - проверяется соответствие общей суммы заказа суммам по отдельным предметам
 4 - длинное сообщение о статусе горизонтально прокручивается
 5 - проверяется код продукта,просматривается его описание и цена
 6 - устанавливается дата по умолчанию и проверяется ввод даты
 7 - автоматически находится и выводится на экран имя покупателя
 8 - проверяется ,допустимо ли значение поля комиссионного расписания
 9 - вывод на экран заголовка заказа связывается с выводом соответствую-
     щей информации об отдельных предметах
 10 - подсчитывается общая сумма по каждому предмету
          Ъ------------------------ДORDER--------------------------ї
     1 -  іOrder No.  ±615±                  Date     ±01-FEB-87± і  - 6
     2 -  іCust Code   ±107±                  Name ±WOMENS±SPORTS± і  - 7
     3 -  іOrder Total ±±±±±±±±±710±          Sales Code ±13±±±±±± і
     4 -  іCheck Total ±±±±±±±±±710±          Commission ±S±       і  - 8
          і                                                        і
          іStatus Msg  Backorder_Store±wi     Shipdate ±06-FEB-87± і - 9
          А--------------------------------------------------------Щ   |
  Ъ------ 5 ------------------ORDER LINE ITEMS-------------------------- 10 Дї
  і       |                                                              |   і
  іItem Product Product                 STD        Actual          Item      і
  іNo. Code    Description             Price      Price      Qty  Total     і
  і±1±± ±100861 ACE±TENNIS±RACKET±II±±± ±±±±±50.00 ±±±±±45.00 ±±10 ±±±±450.00і
  і±2±± ±100870 ACE±TENNIS±BALLS-3±PACK ±±±±±±3.40 ±±±±±±2.80 ±100 ±±±±280.00і
  і±3±± ±100871 ACE±TENNIS±BALLS-6±PACK ±±±±±±5.00 ±±±±±±5.00 ±±50 ±±±±250.00і
  А--------------------------------------------------------------------------
                                                                  
                                  ОБОБЩЕНИЕ
       SQL*Forms - средство разработки ПС 4-го поколения,автоматически
 обеспечивает полный набор возможностей для:
  - Ввода данных
  - Запроса
  - Изменения
  - Удаления
 
                                Законченные ПС
  - Интерфейс легок в изучении и делает пользователей более продуктивными.
 Вы можете вводить и изменять данные простым печатанием.SQL*Forms не имеет
 ни хитроумных команд,которые сложно выучить,ни тяжеловесных меню,замед-
 ляющих Вашу работу.
  - Новички могут легко запрашивать информацию из БД при помощи ме-
 тода "Запрос-По-Примеру".Более опытные пользователи имеют возможность пря-
 мого ввода запросов SQL,чтобы определить даже самые изощренные критерии
 выбора.
  - SQL*Forms обеспечивает меры полной безопасности в многопользовательских
 системах.Также SQL*Forms использует возможность ORACLE "запирать" данные
 на уровне строк,что служит большей производительности,когда систему ис-
 пользуют одновременно несколько человек.
                                             
                    Разработка бланков без программирования
       Революционная структура SQL*Forms как продукта 4-го поколения позво-
 ляет Вам создавать ПС без программирования.
  - SQL*Forms выполняет большую часть работы за Вас.Вы начинаете с пол-
 ностью функционального бланка по умолчанию,который SQL*Forms автоматически
 генерирует при помощи информации из словаря данных ORACLE.Ваши бланки мо-
 гут включать:
      столько отображаемых строк и столбцов,сколько Вам нужно
      любое количество таблиц
      любое количество страниц экрана
  - Вы можете легко усовершенствовать бланки,используя окна-меню SQL*Forms.
 Указание атрибутов полей,установка значений по умолчанию или написание по-
 яснительных сообщений требует всего лишь нескольких нажатий клавиш.
  - Добавление новых полей так же легко.Просто отметьте местоположение поля
 на экране и укажите имя и тип данных поля.
       Оживляйте Ваши ПС эффектными экранами.Используя SQL*Forms-редакторы
 экранов,Вы можете редактировать подсказки к полям и другой текст простым
 печатанием на экране.Вы можете рисовать линии и прямоугольники где угодно,
 а способность SQL*Forms "вырезать" и "приклеивать" любые участки экрана
 позволяет Вам быстро переделывать его внешний вид.
 
            Расширенные возможности благодаря открытой архитектуре
  Открытая архитектура SQL*Forms позволяет Вам разрабатывать самые сложные ПС.
   - SQL*Forms разрешает Вам изменить структуру Вашей ПС подключая операторы
 SQL,макросы или даже Ваши существующие программы на КОБОЛЕ,Си или других
 распространенных языках программирования.Будь это сложные операции присво-
 ения значений полям или запутанные взаимодействия,SQL*Forms дает Вам все
 возможности для этого.
  - Что отличает SQL*Forms от других продуктов - это Ваша возможность неог-
 раниченно приспосабливать бланк к Вашим потребностям.
    1.Начните с автоматически сгенерированных SQL*Forms бланков по умолчанию.
    2.Затем последовательно усовершенствуйте Ваш бланк до полного соответ-
       ствия Вашим потребностям.Вы можете легко изменить Вашу ПС на любом
       этапе,потому что SQL*Forms заботится о скелете из правил по умолча
       нию,а Вы только определяете исключения.
                                              
            Преимущества SQL*Forms: эффективное создание прототипов
       Быстрый процесс разработки с помощью SQL*Forms не только делает Вашу
работу эффективнее,но также позволяет Вам воспользоваться преимуществами более
гибкого стиля работы и вовлекать конечных пользователей в процесс создания
прототипов.С помощью SQL*Forms Вы можете отвечать на требования пользователей
эффективно,потому что все так легко изменить и потому что Вам никогда не при-
дется переписывать Ваш прототип как программу - Ваш SQL*Forms-прототип и есть
Ваша законченная ПС.
 
                    Гибкость для Ваших меняющихся требований
       Гибкость SQL*Forms позволяет Вам также быстро отвечать на меняющиеся
требования пользователей.Когда требования изменяются,Вы можете легко перенаст-
роить Вашу ПС.Нужно ли Вам добавить новые поля или изменить структуры взаимо-
действий,Вы можете быстро модифицировать ПС,практически ничего не переписывая.
       Каковы бы ни были требования Вашей ПС,ORACLE и SQL*Forms дают Вам
 для этого силу и гибкость как в настоящем,так и в будущем.

KOAP Open Portal 2000