Главная > OA Framework, Oracle e-Business Suite > Создание View Object (VO) — только для просмотра данных


Создание View Object (VO) — только для просмотра данных

Создадим View Object для следующего запроса

select empno,
       ename,
       job,
       mgr,
       hiredate,
       sal,
       comm,
       deptno
from scott.emp t
where t.deptno = 10;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7782 CLARK      MANAGER    7839 09.06.1981    2450.00               10
 7839 KING       PRESIDENT       17.11.1981    5000.00               10
 7934 MILLER     CLERK      7782 23.01.1982    1300.00               10

Номер департамента будем передавать в качестве параметра. VO будет только для просмотра данных, т.е. Entity Object создавать не будем.

Создание VO

1) Создаем новый проект или открываем существующий (Создание OAF проекта в JDeveloper)

2) Создаем новый VO через меню «File -> New»



Step 1 of 7:Name
Package: xx.oracle.apps.fnd.framework.appsoracle.server — путь к VO
Все VO должны находиться в конечном каталоге server.
Name: xxEmpVO — имя VO
Read-only Access: CHECK


Step 2 of 7:SQL Statement
Вставляем текст запроса, добавив bind-переменную в условие.
Добавляем условие сортировки



Пролистываем до шага 7

Step 7 of 7:Java
Generate Java File: CHECK
Именнованых переменных у нас в запросе нет, поэтому галка Bind Variable Accessors нам не нужна.



Нажимаем готово

3) Добавляем созданный VO в проект



Заполнение bind-переменной

Открываем созданный класс xxEmpVOImpl


Добавляем новую функцию, которая будет инициализировать bind-переменную

package xx.oracle.apps.fnd.framework.appsoracle.server;

import oracle.apps.fnd.framework.server.OAViewObjectImpl;

public class xxEmpVOImpl extends OAViewObjectImpl
{
  /**This is the default constructor (do not remove)
   */
  public xxEmpVOImpl()
  {
  }

  public void initQuery(String s)
  {
      setWhereClause(null);
      setWhereClauseParams(null);
      setWhereClauseParam(0, s);
      executeQuery();
  }
}

View Object создан.

Похожие записи:

  1. Sand
    3 Июнь 2011 в 10:53 | #1

    А не напишите, как работать с VO, заполняемыми программно? Нужно обновить данные в VO по нажатию на клавишу с типом submitButton, но столкнулся с проблемой передачи параметра из контроллера в VOImpl класс, чтобы определить на какую клавишу было нажатие и обновить VO соответствующими данными

  2. rudev
    6 Июнь 2011 в 07:20 | #2

    @Sand
    Общими словами:
    1) Расширяем стандартный контроллер со страницы.
    2) В методе processFormRequest перехватываем нажатие на кнопку pageContext.getParameter
    3) Вызываем нужный метод из VOImpl для инициализации параметров или указываем bind значения напрямую.
    4) При необходимости выполняем executeQuery()

  3. profik777
    10 Сентябрь 2012 в 19:13 | #3

    Подскажите, как передать параметр в View object в часть с SELECT а не WHERE…
    vo.setWhereClauseParam(0, значение параметра); — в данном случае не подойдет?

  4. 11 Сентябрь 2012 в 10:34 | #4

    @profik777
    Подойдет. Bind переменная может быть как в условии (where), так и в параметрах выборки (select).

  1. Пока что нет уведомлений.