Пример использования Oracle HTML DB (APEX)

По этой ссылке вы можете оценить приложение «Заказы клиентов», написанное на Oracle HTML DB и работающее на нашем сервере с базой данных Oracle 10g. Идентификатор пользователя - а, пароль также а на английском.

Запустить «Заказы клиентов»

Oracle HTML DB - это инструмент, позволяющий быстро и без больших накладных затрат, создавать приложения с WEB - интерфейсом. Дешевизна заключается в том, что не нужно покупать сервер приложений, HTML DB или последняя версия APEX входит в комплект поставки Oracle database server 10g, сервер Apache устанавливается также по умолчанию, в нашей установке используется именно такая конструкция. Простота обеспечивается возможностями инструмента Oracle HTML DB или APEX, которые демонстрируется нашей публикацией.

Добрый день, коллеги!
В данной публикации мы постараемся рассказать
Вам о моментах пересылки информации с одной страницы на другую, задании динамических запросов, с использованием введенной информации, и обработки запросов не только по нажатию на кнопки страницы, но и по кнопке выбора строки в динамической таблице. Для примера, разберем создание страницы «Выбор товара». Вы можете попасть на данную страницу по нажатию на кнопку «Добавить товар», причем список товара, отображаемый на странице, изменяется в зависимости от того стоит галка в CHECKBOX «Показывать товар в наличии» или нет.

СОЗДАНИЕ ЭЛЕМЕНТОВ НА СТРАНИЦЕ


В первую очередь создадим CHECKBOX - элемент (ITEM) на странице:
1. Items – Create
2. Item Name P7_ISINSTORAGE
Display As: CheckBox
Next
3. List of Values Query: STATIC: Показывать товар в наличии; 1
А тут следует дать некоторые комментарии: в этой строке мы указываем, что если стоит галка, что значение данного элемента есть 1, если не стоит – NULL. «Показывать товар в наличии» – это текст, который выводится справа от CHECKBOX. Это не LABEL (!!!).
Next
4.Очистим Label
Next
5. Next
Default Value: 1
По умолчанию, значение 1, т.е. галка стоит.
Create Item
Отлично! Теперь нажмем RUN PAGE и посмотрим, как это выглядит.
Теперь необходимо создать кнопку «Добавить», при нажатии на которую, будет осуществляться переход на другую страницу и передаваться параметр, установленный в CHECKBOX.
Для этого необходимо совершить следующие действия:
1. Buttons – Create
2. Create a button in a region position
Next
3. Button Name: SUBMIT
Label: Добавить
NEXT
Следует оговориться, что названия кнопок имеют немаловажное значение:
SUBMIT – используется, если есть необходимость переслать информацию
CREATE – создание записи в таблице
UPDATE – обновление записи в таблице
DELETE – удаление записи и проч.
4. Выбираем, как будет располагаться наша кнопка и нажимаем NEXT
5. Branch to Page(when button pressed) Оставляем пустым
Create Button
Теперь имеет место необходимость разобраться, как все же перенаправить данные на другую страницу, да и вообще перейти на нее. Для этого необходимосоздать правило в BRANCHING:
1. Branching – Create
2. Branch Point: 4. After Processing – Перенаправлять только после того, как буду произведены все сравнения и выполнены все скрипты.
Branch Type: Branch to page or URL
Next
3. Page: 10 (в данном приложении)
Set these items: P10_ISINSTORAGE
With these values: &P7_ISINSTORAGE. (На конце точка)
Предпочтительнее, правда, использовать мастера, который вызывается по нажатию на кнопку
Next
4. When Button Pressed: SUBMIT – Вызывать перенаправление только тогда, когда нажата кнопка SUBMIT (Добавить)
Create Branch
Замечательно, теперь кнопка создана, можно и создавать страницу, в которой будет динамически возвращаться список товара.

ДИНАМИЧЕСКИЙ ЗАПРОС

Для этого нажмем в области PAGE кнопку CREATE. Создание страницы достаточно тривиальное занятие, поэтому описывать здесь процесс мы не будем. После создания станицы создадим новый REGION:
1. REGION – CREATE
2. Type: REPORT
3. Report Implementation: PL/SQL Function Returning SQL Query SQL Report
4. Title: Выбор товара
5. PL/SQL function body:
DECLARE
      SQLQ varchar2(3000);
BEGIN
-- Если мы установили галку
      IF v('P10_INSTORAGE') = '1' THEN
-- Первое поле во всех возвращаемых записях
-- имеет значение «Выбрать». Слово стоит в ДВУХ ОДИНАРНЫХ «’» кавычках
            SQLQ := 'SELECT ALL TO_CHAR(''Выбрать''),COMMODITY.CODE,
            COMMODITY.TYPE1, COMMODITY.TYPE2,COMMODITY.TYPE3,
            COMMODITY.SECOND_NAME,COMMODITY.COMMODITY,
            REMAINS.PRIME_COST,SUM(REMAINS.QUANTITY)
            FROM REMAINS, COMMODITY, STORAGE_GROUP,STORAGE, SELL_PRICES
            WHERE (REMAINS.CODE = COMMODITY.CODE) AND
            (storage_group.storage_group=storage.storage_group) and
            (storage.storage = remains.storage) and (UPPER(storage_group.branch) = UPPER(TO_CHAR(:P10_BRANCH))) AND
            ( SELL_PRICES.CODE = REMAINS.CODE ) AND
            ( UPPER(SELL_PRICES.PRICE_NAME) = UPPER(TO_CHAR(:P10_PRICE_TYPE)) )
            GROUP BY COMMODITY.CODE, COMMODITY.TYPE1, COMMODITY.TYPE2, COMMODITY.TYPE3,
            COMMODITY.SECOND_NAME, COMMODITY.COMMODITY, REMAINS.PRIME_COST';
      ELSE
            SQLQ := 'SELECT ALL TO_CHAR(''Выбрать''),COMMODITY.CODE,COMMODITY.TYPE1, COMMODITY.TYPE2,
            COMMODITY.TYPE3, COMMODITY.SECOND_NAME, COMMODITY.COMMODITY,
            REMAINS.PRIME_COST, SUM(REMAINS.QUANTITY)
            FROM COMMODITY, SELL_PRICES, REMAINS
            WHERE
            ( SELL_PRICES.CODE = COMMODITY.CODE ) AND
            ( SELL_PRICES.PRICE_NAME = TO_CHAR(:P10_PRICE_TYPE) ) AND
            (COMMODITY.CODE =REMAINS.CODE (+))
            GROUP BY COMMODITY.CODE, COMMODITY.TYPE1, COMMODITY.TYPE2, COMMODITY.TYPE3,
            COMMODITY.SECOND_NAME, COMMODITY.COMMODITY, REMAINS.PRIME_COST';
      END IF;
-- Возвращаем запрос
      RETURN SQLQ;
END;
CREATE REGION
Некоторые замечания:
• Предпочтительнее возвращать одинаковое количество полей, т.к. в будущем будет меньше проблем, хотя можно включить опцию «Use Generic Column Names (parse query at runtime only)» в свойствах REGION
• Если Вы собираетесь предоставлять пользователю возможность динамически сортировать результаты выборки (в Report Attributes устанавливаем галки напротив тех полей, относительно которых будет возможность сортировать), то конструкцию ORDER BY НЕЛЬЗЯ использовать.
Теперь необходимо создать объект P10_ISINSTORAGE, но уже тип его должен быть HIDDEN.
Итак, мы создали динамически изменяемый запрос, теперь предстоит очередь дать возможность пользователю выбрать необходимую строчку.
ВЫБОР СТРОКИ
В запросе мы создали дополнительное поле, которое имело значение «Выбрать» - вот его мы и будем использовать в качестве ссылки на другую страницу, куда и будем передавать информацию о записи, выбранной пользователем. Зайдем в свойства REGION, перейдем на закладку Report Attributes.

Рядом с «TO_CHAR(‘ВЫБРАТЬ’)» нажмем на кнопку .
Перейдем в область COLUMN LINK.
Сразу следует оговорить, что если имеется необходимость в пересылке на страницу не более 2-х параметров, то можно ограничиться использованием кнопки GENERATE LINK (использование этой кнопки достаточно просто – В PAGE устанавливаем необходимую страницу, куда будет осуществляться передача данных, в ITEM указываем название элемента, куда будет происходить передача, в VALUE значение, и нажимаем GENERATE LINK), в нашем же случае, есть необходимость передать не только значения из таблицы, но и значения элементов на странице, причем общее количество их более 2. Для этого используем следующую строку в URL:
f?p=&APP_ID.:8:#APP_SESSION#::::P8_QUANTITY,P8_CODE,P8_COMMODITY,P8_PRICE,P8_LOGIN,
P8_INVOICE:0,#CODE#,#COMMODITY#,#PRIME_COST#,&P10_LOGIN.,&P10_INVOICE.

Синтаксис следующий:
• f?p=&APP_ID.:8:#APP_SESSION#:::: необходимости объяснять для чего она предназначена, думаем, нет
• Затем идет перечисление имен объектов на странице, куда ссылаемся, названия разделяются запятыми
• Затем :
• Затем значения, которые мы устанавливаем. Разделяются значения, аналогично имена объектов, запятыми. Формат следудщий:
• #Название_поля# - если необходимо передать значение поля из выбранной строки
• &Название_элемента_на_текущей_странице. (в конце точка)- если необходимо передать значение элемента, находящегося на данной странце
• Либо константа
Теперь можно запускать приложение и смотреть его работоспособность. В ближайших публикациях мы попробуем рассказать про такие возможности HTML DB:
• автоматический FETCH
• автоматический INSERT, UPDATE, DELETE
• использование PROCESSES
• использование VALIDATIONS
• работа с LOVs
• использование мастеров
• и многое другое!


ЗАКЛЮЧЕНИЕ

Как Вы могли заметить, создание приложение в HTML DB (
APEX) многим отличается от создания приложений в привычной объектно-ориентированной среде программирования. Это может показаться многим неудобным, но эти отличия несут не только отрицательный, но и положительный характер. К тому же многочисленные мастера в какой-то мере упрощают разработку приложений, делая ее достаточно простой, с которой может справиться достаточно квалифицированный пользователь. Быть может, HTML DB (APEX) – это первый шаг к созданию среды программирования, в которой с помощью многочисленных мастеров, сам пользователь будет разрабатывать приложения, которые ему необходимы в данный момент, и наш труд, коллеги станет не столь необходимым.
Спасибо за внимание!
И следите за публикациями на сайте www.
azsoft.ru!
C уважением,
группа разработчиков.

 

Вернуться

На страницу для программистов >>>       На главную >>>

Реклама: 

©Copyright 2006 - 2008 АЗСофт (AZSoft)

 

  

 Powered by AZSoft
Rambler's Top100
 Copyright AZSoft.All Rights Reserved.