четверг, 26 апреля 2007 г.

Особенности использования "Column Link" в отчетах Application Express.

В отчетах Oracle Application Express есть возможность создавать переходы как на другие страницы приложения, так и на произвольные ресурсы сети. Для этого используется настройка "Column Link" поля отчета. Например, для созданного ранее приложения:

apex report Column Link, target=page Очевидно, что максимальное количество передаваемых параметров - 3. Однако, это не совсем так... Количество передаваемых параметров можно увеличить. Это становиться очевидно, если изменить значение в поле "Target" того же блока "Column Link" на "URL". Вот что мы увидим:

apex report Column Link, target=URLПоля, куда вводились имена параметров и их новые значения, стали недоступными для редактирования, но появилось новое поле "URL", где виден тот URL, который будет использоваться на самом деле. Синтаксис данной строки хорошо описан в документации на OTN.
Таким образом, все передаваемые параметры можно писать именно в строке URL. То есть, если мы захотим передать 4 параметра, то строка будет выглядеть следующим образом:

"f?p=&APP_ID.:1:&SESSION.::&DEBUG.::P1_TYPE,P2_TYPE,P3_TYPE,P4_TYPE:#OBJECT_TYPE#,2,3,4"
,где:

  • "&APP_ID." - идентификатор приложения

  • "&SESSION." - идентификатор сессии

  • "P1_TYPE,P2_TYPE,P3_TYPE,P4_TYPE" - список через запятую тех параметров, которым будет присваиваться новые значения (пробелы не допускаются)

  • "#OBJECT_TYPE#,2,3,4" - список новых значений (пробелы не допускаются)


В итоге переменной "P1_TYPE" будет присвоено значение из колонки #OBJECT_TYPE# текущего отчета. Переменной "P2_TYPE" будет присвоено значение "2", "P3_TYPE" - "3", "P4_TYPE" - "4".
Важна очередность перечисления наименований переменных и их значений.
Вот и вся хитрость.

4 комментария:

Анонимный комментирует...

Что делать, если в передаваемом значении есть запятая?

Unknown комментирует...

Да, если запятая или двоеточие - алиас капут. Менять на что-то.
Автору респект - очень помог. Сразу не допрешь, хотя понятно, как значения из страницы в страницу ходят...

Анонимный комментирует...

Запятую можно протащить, если передаваемое значение заключить в бэкслеши - \123,45\

Unknown комментирует...

Как решить проблему.
Линк по клику на Item в виде картинки строки отчета перерисовывает эту же страницу (это понятно), но необходимо по этому клику выполнить событие например разблокировать учетную запись пользователя.
Я не нахожу где и как я могу вызвать эту процедуру.
Помогите пожалуйста.