Мой сайт
Главная | | Регистрация | Вход
Приветствую Вас Гость | RSS
Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 6
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Июнь 2013  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » 2013 » Июнь » 30 » ЧТО По
    15:34
     

    ЧТО По

    Оператор DISPLAY FORM отображает экранную форму, начиная с третьей строки (если это не изменено предложением ATTRIBUTE оператора OPEN WINDOW) экрана терминала или окна, возможно, со своими атрибутами, определяющими цветовую гамму.

    Отметим, что указание опции WITH FORM в операторе OPEN WINDOW равносильно паре операторов OPEN FORM и DISPLAY FORM.

  • отображать список программных переменных в поля экранной формы с использованием конструкции DISPLAY BY NAME . . . при условии совпадения имен программных переменных с именами полей экранной формы;
  • задавать при отображении данных собственные атрибуты, определяющие цветовую гамму.
  • Приведенный пример демонстрирует отображение значений программных переменных в поля экранной формы Example1.per в случае неидентичности имен переменных и имен полей, указанных в секции Attributes.

    В следующем примере имена отображаемых значений и используемые поля экранной формы совпадают, что позволяет применять конструкцию BY NAME и не различать имена программных переменных и экранных полей.

    Поскольку экранные записи являются лишь средством группирования полей экранной формы, работа с ними выполняется теми же операторами языка Informix-4GL, что и ввод/вывод в поля/из полей экранной формы: по каждому оператору DISPLAY элементы записи, определенной в 4GL-программе и имеющие те же характеристики, что и элементы экранной записи, отображаются в поля экранной формы, ассоциированные с этой экранной записью; по оператору INPUT выполняется обратная операция, по которой вводимые данные из полей экранной формы, составляющие экранную запись, переносятся в элементы программной записи. В обоих случая в 4GL-операторах указываются лишь имена программных и экранных записей.

    Если в секции Instructions экранной формы Example1.per из полей экранной формы описана экранная запись

    то для отображения программных переменных или элементов программной записи также используется конструкция TO оператора DISPLAY.

    P ALIGN="JUSTIFY">Оператор INPUT позволяет:
    • вводить список указанных программных переменных через поля экранной формы, используя имена полей экранной формы (INPUT. . . FROM . . .);
    • вводить список программных переменных через поля экранной формы с использованием конструкции INPUT BY NAME . . . при условии совпадения имен программных переменных с именами экранных полей экранной формы;
    • вводить элементы программной записи (предварительно созданные по DEFINE variable-record RECORD . . . ) через поля экранной записи (INPUT variable-record.* FROM screen-record.*);
    • определять использование/не использование значений по умолчанию для полей формы (WITHOUT DEFAULTS);
    • задавать действия по обработке до/после ввода данных в поле (BEFORE FIELD/AFTER FIELD, а также контролировать вводимые значения;
    • определять порядок ввода данных в поля экранной формы (NEXT FIELD); при отсутствии NEXT FIELD порядок обхода полей экранной формы определяется последовательностью полей в списке INPUT;
    • определять действия, которые необходимо выполнить при нажатии указанных функциональных или управляющих клавиш (ON KEY);
    • использовать help-сообщения из help-файла (HELP
  • проверять значение текущего поля с использованием функции infield(field), возвращающей значение true/false;
  • при необходимости прерывать ввод (EXIT INPUT).
  • Ввод данных по оператору INPUT завершается нажатием клавиши ESC, либо управляющей клавиши, определенной параметром ACCEPT KEY в операторе OPTIONS, либо нажатием клавиши RETURN после ввода последнего поля экранной формы при условии действия опции INPUT NO WRAP в операторе OPTIONS. В случае опции INPUT WRAP в операторе OPTIONS нажатие клавиши RETURN после ввода последнего поля экранной формы приводит к циклическому перемещению на первое поле экранной формы.

    Следующий пример демонстрирует ввод значений элементов программной записи из полей экранной записи и использование конструкции WITHOUT DEFAULTS.

    Ниже приведены примеры использования различных конструкций оператора INPUT.

    Отметим, что ввод с использованием экранной формы напрямую не связан с занесением информации в таблицы базы данных.

    Оператор CLOSE FORM разрывает связь с экранной формой.

    Схема организации скроллирующего массива следующая:

    • в секции INSTRUCTIONS экранной формы определяется экранный массив;
    • в 4GL-программе оператором DEFINE определяется массив достаточной размерности, элементами которого являются записи, компоненты которых имеют те же атрибуты, что и поля экранной формы, ассоциированные с ней;
    • любыми средствами выбора данных из таблиц (fetch, foreach) заполняется указанный выше программный массив;
    • с помощью функции set_count() 4GL-программе указывается, сколько строк программного массива заполнено данными и подлежит последующему выводу;
    • оператором DISPLAY ARRAY выполняется отображение скроллирующего программного массива в экранный массив;
    • с помощью функций arr_curr(), scr_liпе() в любой момент можно получить номер текущей строки программного и экранного массивов соответственно;
    • в блоках ON KEY, ассоциированных с DISPLAY ARRAY, при необходимости определяются комбинации клавиш и программные действия, которые должны быть выполнены при нажатии этих клавиш.

    Ниже приведен пример отображение данных в экранный массив s_items[5], описанный в экранной форме Example1.per.

    Средства организации скроллирующего массива на основе оператора DISPLAY ARRAY могут использоваться для создания вертикального меню. С этой целью организуется экранный массив, состоящий из одного или нескольких полей, и программный массив, содержащий либо фиксированные тексты, либо заполненный элементами строк некоторой таблицы. Функции scr_liпе(), arr_curr() позволяют отслеживать положение курсора на экране и внутри программного массива (пункта меню). С помощью конструкции ON KEY, связанной с оператором DISPLAY ARRAY, выполняется та или иная обработка, которая в общем случае может быть связана с пунктом меню, на котором находится курсор. После выполнения некоторой обработки присходит возврат в вертикальное меню (скроллирующий массив).

    Приведенный выше фрагмент 4GL-программы, выполняющий работу с вертикальным меню, использует экранную форму (Scroll.per), в которой описан экранный массив из шести записей.

    В отличие от оператора DISPLAY ARRAY, который позволяет лишь отображать скроллирующий массив записей, оператор INPUT ARRAY позволяет менять содержимое записей, удалять их и вставлять новые.

    Основные шаги при подготовке экранного массива и использовании оператора INPUT ARRAY те же, что и для оператора DISPLAY ARRAY. Дополнительно отметим возможность включения в этот оператор блоков BEFORE/AFTER INPUT, BEFORE/AFTER FIELD, аналогичных по назначению оператору INPUT и использование функций arr_count() для определения количества

    заполненных строк в программном массиве. После выполнения оператора INPUT ARRAY с учетом полученного числа строк в программном массиве выполняется обновление строк таблицы, которая ассоциирована с программным массивом.

    Ввод данных по оператору INPUT ARRAY так же, как и для INPUT, прерывается нажатием клавиши ESC, либо управляющей клавиши, определенной параметром ACCEPT KEY в операторе OPTIONS. Управляющие клавиши, определенные в параметрах INSERT KEY, DELETE KEY, NEXT KEY, PREVIOUS KEY оператора OPTIONS, служат соответствено для вставки, удаления строк в экранном массиве, а также

    перемещения страниц вперед и назад.

    Ниже приведен фрагмент программы , выполняющей ввод данных в экранный массив s_items[5], описанный в экранной форме Example1.per.

    Informix-4GL содержит средства, позволяющие использовать экранную форму и несколько другим путем: помещая литеральные значения и ограничения на значения в поля экранной формы во время выполнения программы, пользователь формирует условия для запроса. Такой процесс называется запросом по образцу (Query-by-example). Оператор CONSTRUCT используется для создания переменной типа Char и формирования булевого выражения, построенного на экранном запросе Query-by-example. Указанный оператор в значительной степени похож на оператор INPUT и содержит список имен столбцов базы данных и список имен полей экранной формы, ассоциированных с этими столбцами. При совпадении имен полей экранной формы и имен столбцов конструкция BY NAME позволяет исключить из оператора CONSTRUCT список имен полей экранной формы. Конструкции BEFORE (AFTER) FIELD, BEFORE (AFTER) CONSTRUCT, ON KEY в операторе CONSTRUCT используются аналогично соответствующим конструкциям оператора INPUT. При вводе параметров поиска Query-by-example необходимо придерживаться следующего синтаксиса:

    Символ

    Значение

    Тип данных

    Использование

    =

    равно

    все

    по умолчанию

    >

    больше

    все

    >x

    <

    меньше

    все

    >x

    >=

    больше или равно

    все

    >=x

    <=

    меньше или равно

    все

    <=x

    <>

    не равно

    все

    <>x

    :

    диапазон

    все

    x:y

    *

    ноль или больше символов

    Char

    *x, x*, *x*

    ?

    один символ

    Char

    ?x, x?, ?x?, x??

    . .

    диапазон

    Datetime, Interval

    x . . y

    |

    или

    все

    x | y

    Ввод в поле значения литерала равносильно формированию условия равенства на значение соответствующего столбца.

    Ввод данных по оператору CONSTRUCT так же, как и для оператора INPUT завершается нажатием клавиши ESC, либо управляющей клавиши, определенной параметром ACCEPT KEY в операторе OPTIONS, либо нажатием клавиши RETURN после ввода последнего поля экранной формы при условии действия опции INPUT NO WRAP в операторе OPTIONS. В случае опции INPUT WRAP в операторе OPTIONS нажатие клавиши RETURN после ввода последнего поля экранной формы приводит к циклическому перемещению курсора на первое поле экранной формы. Если после окончания ввода критерия поиска в поля экранной формы ни в одно из полей не введено значений, сформированное условие в текстовой переменной, указанной в операторе CONSTRUCT, имеет вид " 1=1".

    На основании введенных данных в поля экранной формы в текстовой переменной, указанной в операторе CONSTRUCT, формируется булевое выражение, которое впоследствии может использоваться при формировании оператора SQL:

    • к постоянной части оператора SELECT (INSERT, DELETE, UPDATE) после фразы WHERE добавляется условие, хранимое в переменной, указанной в операторе CONSTRUCT;
    • выполняется оператор PREPARE для составленного текста SQL-оператора;
    • объявляется курсор для структуры, сформированной в операторе PREPARE;
    • открывается курсор и оператором FETCH (FOREACH) выполняется чтение строк, удовлетворяющих сформированному запросу.

    Отметим два 4GL-оператора общего использования, полезных при разработке программных приложений. Оператор WHENEVER с опциями GOTO, CALL, CONTINUE позволяет определить действия, которые необходимо выполнить в случае возникновения ошибок при исполнении программы. Данный оператор особенно полезен при динамическом формировании операторов, когда в тексте оператора возможны ошибки. Отслеживая состояние системных переменных sqlca.sqlcode и STATUS пользователь сам обрабатывает возникающие ошибки. Значение по умолчанию для ERROR - STOP, для WARNING - CONTINUE. Оператор DEFER запрещает прерывание ввода (обычно DEL или Control-C) и прерывание программы (Control-\).

    Просмотров: 244 | Добавил: fortanted | Рейтинг: 0.0/0
    Всего комментариев: 0