|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Приветствую всех! Столкнулся со следующей проблемой. На странице есть регион, куда должны загружаться данные о произведенных ремонтах по ID из таблицы Клиент Мне не нужны различные табличные варианты (Classic report, Interactive gride) по этому, не знаю правильно или нет, выбрал PL/SQL Dynamic content. К примеру у клиента с ID = 1 в таблице Remont есть 2 связанные записи и я хочу чтобы записи отображались так: Сначала одна, а потом другая --Запись № 1--- 01.09.2019 ремонт двигателя --Запись № 2--- 02.09.2019 Ремонт зеркала В php я делал массивы, которые вместе с табличкой шли в цикле т.е. Запись 1 выбрала данные, потом пошли данные для записи 2, как это правильно сделать в Апексе не могу понять, INTO нельзя т.к. там одно значение? Может Classic report а потом css убирать таблицу...как это правильно делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:19 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Да, забыл сказать, что 2 записи это для примера, на самом деле их неизвестное количество, может быть 5, 10... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:43 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Ну а в чем проблема написать цикл в pl/sql? Раз уж вы делали это на php, вам не сложно будет просто переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 09:40 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangel, Куда в регионе их засовывать? И опять таки, если делать "репорты", то columns создаются из запроса, но мне не нужны табличные варианты, а INTO подразумевают ITEMS куда их нужно засунуть, но я не знаю сколько их... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 10:29 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Javl, СТоит потратить время на изучение классиков APEX-а Denes Kubicek - ApEx Demo Applications https://apex.oracle.com/pls/otn/f?p=31517 https://apex.oracle.com/pls/otn/f?p=193000 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:11 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Javl, На pl/sql можно сгенерировать страничку целиком самому. Вам же надо только регион. Быстро пример Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:22 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangel, Это сработает только один раз - при загрузке/рефреше страницы Мой вариант подходит под условие задачи больше Допустим 1) в левой панели есть region с грид (master) с набором id и names, а в правой панели (slave) просто region - как бы подробности по сабжу 2) одна из колонок грида помечается как ссылка javascript:$s('P1_SELECTED_ID','#ID#'); 3) клик по этой колонке вызывает изменение item P1_SELECTED_ID на заданное значение ID 4) по изменению P1_SELECTED_ID срабатывает DA, которую я привел 5) SetValue в составе DA полностью перерисует правую панель новым контентом ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:37 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
ZhV, Тогда вам надо плагин писать, если вы хотите чтобы Ваш регион обновлялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:41 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Либо второй вариант без плагина, сгенерированный HTML код, вставляется с помощию JS, и она каждый раз вызывается при изменении какит то элементов ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:42 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
ZhV, Спасибо за ответ!!! На сколько это правильный метод, я не очень понимаю почему в репорт все выбирается без проблем, а чтобы просто получить текст в столбик нужно сделать столько манипуляций? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:45 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangelZhV, Тогда вам надо плагин писать, если вы хотите чтобы Ваш регион обновлялся. Не нужен плагин, все гораздо проще Посмотрите картинку - в составе DA после SetValue стоит другая ACTION - REFRESH как раз на этот region ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:45 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangelZhV, Тогда вам надо плагин писать, если вы хотите чтобы Ваш регион обновлялся. Регион обновляется один раз при загрузке страницы или я не правильно понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:46 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
JavlНа сколько это правильный метод, я не очень понимаю почему в репорт все выбирается без проблем, а чтобы просто получить текст в столбик нужно сделать столько манипуляций? Это вы никогда не видели чем занимаются люди по профессии "HTML-верстка" JavlРегион обновляется один раз при загрузке страницы или я не правильно понимаю? Да. Это было всегда для HTML Чтобы регион обновился нужно либо обновить(перезагрузить) всю страницу Либо по заданному событию (клик или смена позиции в гриде или tree => изменение item) перезаполнить и отрефрешить заданный region DA - грандиозный и суперэффективный инструмент APEX-а осваивайте ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:57 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
JavlblkangelZhV, Тогда вам надо плагин писать, если вы хотите чтобы Ваш регион обновлялся. Регион обновляется один раз при загрузке страницы или я не правильно понимаю? Как напишите. Если мне необходимо динамически обновлять регион "свобственного производства", то я использую плагин. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:11 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangelJavl, На pl/sql можно сгенерировать страничку целиком самому. Вам же надо только регион. Быстро пример Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Хороший вариант, в принципе подходит, буду дорабатывать!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:22 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
ZhVJavl, СТоит потратить время на изучение классиков APEX-а Denes Kubicek - ApEx Demo Applications https://apex.oracle.com/pls/otn/f?p=31517 https://apex.oracle.com/pls/otn/f?p=193000 В приведенном Вами примере мне не совсем понятно items P1_SEL_ADDR сначала записываются данные записи 1, а потом записи 2 и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:27 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangelЕсли мне необходимо динамически обновлять регион "свобственного производства", то я использую плагин. Хозяин-барин Но если бы я сидел на code-review - я бы такой код "зарубил" Зачем использовать костыли если есть штатные инструменты APEX-а Кто-нибудь проверял ваш плагин на работоспосообность в разных ОС и броузерах? Сохранит ли этот плагин работоспособность при обновлении версии APEX-а? Очень многие плагины, писаные по APEX4, после 5-ки "свалились" Насчет стабильности APEX-ого рефреша я почему-то уверен Насчет вашего примера с использованием sys.htp.p я бы сначала собрал весь HTML-контент в одну varchar2(32000) (! только не забывать, что первод строки в html - это '<br>')) а затем бы все выдал одной sys.htp.p() Быстрее будет - каждая команда вывода включает кучу функций/событий в html-engine , и лучше делать это один раз ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:35 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
ZhVblkangelЕсли мне необходимо динамически обновлять регион "свобственного производства", то я использую плагин. Хозяин-барин Но если бы я сидел на code-review - я бы такой код "зарубил" Зачем использовать костыли если есть штатные инструменты APEX-а Кто-нибудь проверял ваш плагин на работоспосообность в разных ОС и броузерах? Сохранит ли этот плагин работоспособность при обновлении версии APEX-а? Очень многие плагины, писаные по APEX4, после 5-ки "свалились" Конечно, и не один плагин был написан ZhVНасчет вашего примера с использованием sys.htp.p я бы сначала собрал весь HTML-контент в одну varchar2(32000) (! только не забывать, что первод строки в html - это '<br>')) а затем бы все выдал одной sys.htp.p() Быстрее будет - каждая команда вывода включает кучу функций/событий в html-engine , и лучше делать это один раз Тогда уже надо собирать в CLOB, так как html разметка может не ограничится varchar2, и выплевыввать в цикле по АКЦЕНТИРУЮ по 8192, а не по 32к. Пример: Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:49 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Javl В приведенном Вами примере мне не совсем понятно items P1_SEL_ADDR сначала записываются данные записи 1, а потом записи 2 и т.д.? В P1_SEL_ADDR записывается текст адреса из той строки(row) грида, на которой я кликнул По клику срабатывает event и правая панель (подбор адреса ФИАС по степени совпадения) полностью переририсовывется Вот так это выглядит ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:54 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangel ... Тогда уже надо собирать в CLOB, так как html разметка может не ограничится varchar2, и выплевыввать в цикле по АКЦЕНТИРУЮ по 8192, а не по 32к. ... Да нормально выводится 32k Это между прочим довольно много Может быть 8k - это было в старых версиях Вот встроенный просмотрщик XML в модальном регионе - как раз сделан по методе - 32к за один раз в htp.p ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:08 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
Это как раз в новых версиях, так как появились кодировки с размером в 4 байта, и если Вы хотите, как вы говорите, чтобы работало везде, надо использовать 8192. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:10 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
А как известно, лентяи переделывают трижды :) Один раз сделал и забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:11 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
blkangelЭто как раз в новых версиях, так как появились кодировки с размером в 4 байта, и если Вы хотите, как вы говорите, чтобы работало везде, надо использовать 8192. :) APEX на web-side выступает "клиентом" по отношению к своей же базе и подчиняется законам HTML Кодировки хранения в БД никакого отношения к отображению в броузере не имеют. Кодировка всех страниц APEX-приложения задается глобально в APEX-template, как правило utf-8 Кодировку текущей страницы легко узнать "Исходный код" Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Ладно. Я заканчиваю с компараторством Надеюсь топик стартер получил нужные ответы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:30 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
ZhVJavlВ приведенном Вами примере мне не совсем понятно items P1_SEL_ADDR сначала записываются данные записи 1, а потом записи 2 и т.д.? В P1_SEL_ADDR записывается текст адреса из той строки(row) грида, на которой я кликнул По клику срабатывает event и правая панель (подбор адреса ФИАС по степени совпадения) полностью переририсовывется Вот так это выглядит В Вашем примере по клику открывается одна запись, у меня их может быть N количество. Я изначально сделал с курсором, но items принимают только одно значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:37 |
|
Продолжение вопросов как сделать в Апексе!
|
|||
---|---|---|---|
#18+
JavlВ Вашем примере по клику открывается одна запись, у меня их может быть N количество. Я изначально сделал с курсором, но items принимают только одно значение. Мой пример - по моей задаче. Ваш пример можно было бы решить похоже Слева - клиенты со своими ФИО и ID (марка машины?) По клику на заданной строке левого грида выбирается id клиента (причем буквально P1_SELECTED_ID=1234) и по этому id в скрипте DA делается выборка и генерится HTML-контент Этот контент отображается справа - все записи по ремонту У вас другие идеи? Ну все в ваших руках. Вам решать и делать Но (ИМХО) освоение новых технологий способом изобретения "особого собственного пути" - очень неэффективно У APEX-а довольно много sample. Еще можно сходить к Кубичеку - посмотреть, поучиться Лучше взять готовые работающие примеры и попытаться адаптировать к своим задачам, (можно просто тупо копировать страницы из сэмплов в свое приложение) чем придумывать свои, которые могут быть заведомо неработоспособны ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:57 |
|
|
start [/forum/topic.php?fid=50&msg=39857041&tid=1873992]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 260ms |
0 / 0 |