|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Приветствую всех! Продолжаю изучение Апекса и постоянно наталкиваюсь на непонимание, как сделать ту или иную вещь, пытаюсь изобретать велосипед, но думаю он давно уже изобретен и решил обратиться к специалистам для помощи как правильно решить задачу т.к. я могу предложить несколько решений, но насколько они будут правильными для Апекса. В общем есть стандартная схема, на одной странице выбираются товары по заданным условиям, которые потом отображается на странице Classic Report вместе с фотографиями. Ели изначально заданы определенные условия, то все понятно, нужно расширить различными IF и вот тут для меня тупик, на какой странице и каким средством это можно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2019, 16:36 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Javl, Создаёте на страницы item необходимого типа и обращайтесь к ним в запросе через двоеточие + имя. Например, создали на 10 странице элемент с именем P10_ID, а в запросе обращаемся как Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 10:45 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Никита АJavl, Создаёте на страницы item необходимого типа и обращайтесь к ним в запросе через двоеточие + имя. Например, создали на 10 странице элемент с именем P10_ID, а в запросе обращаемся как Код: plsql 1.
Не все так просто...может конечно криво описал свою проблему: Есть выбор товара, к примеру как в стандартном приложении select p.product_id, p.product_name, p.product_description, p.category, decode(p.product_avail, 'Y','Yes','N','No') product_avail, p.list_price, (select sum(quantity) from demo_order_items where product_id = p.product_id) units, (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales, (select count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers, (select max(o.order_timestamp) od from demo_orders o, demo_order_items i where o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold, p.product_id img, apex_util.prepare_url(p_url=>'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID,P6_BRANCH:'||p.product_id||','||3,p_dialog=> 'null') icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, '<img alt="'||apex_escape.html_attribute(p.product_name)||'" title="'||apex_escape.html_attribute(p.product_name) ||'" style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' ||'src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||'" height="75" width="75" />') detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)) detail_img_no_style, tags from demo_product_info p where p.product_name = Условие1 and p.product_name = Условие2 and p.product_name = Условие3 К этому отчету нужно добавить условия с IF, не могу понять каким образом это сделать и куда запихнуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 11:09 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Я изначально не понял проблему. Используйте регион на на SQL запросе, а на PL/SQL Function Body returning SQL Query ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 11:29 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Создайте 3 элемента(item) на странице, в которых можно будет выбрать тип товара P10_product_name_1 P10_product_name_2 P10_product_name_3 где "10", не забудьте поменять на номер вашей страницы, а "product_name_1" произвольное название Javlselect p.product_id, p.product_name, p.product_description, p.category, decode(p.product_avail, 'Y','Yes','N','No') product_avail, p.list_price, (select sum(quantity) from demo_order_items where product_id = p.product_id) units, (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales, (select count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers, (select max(o.order_timestamp) od from demo_orders o, demo_order_items i where o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold, p.product_id img, apex_util.prepare_url(p_url=>'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID,P6_BRANCH:'||p.product_id||','||3,p_dialog=> 'null') icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, '<img alt="'||apex_escape.html_attribute(p.product_name)||'" title="'||apex_escape.html_attribute(p.product_name) ||'" style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' ||'src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||'" height="75" width="75" />') detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)) detail_img_no_style, tags from demo_product_info p where p.product_name = :P10_product_name_1 and p.product_name = :P10_product_name_2 and p.product_name = :P10_product_name_3 Но такая конструкция не будет работать, или вместо AND используйте OR, или вообще отбор лучше делать не по названию товара, а по типу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 11:53 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangelЯ изначально не понял проблему. Используйте регион на на SQL запросе, а на PL/SQL Function Body returning SQL Query Пробовал, функция возвращает одно значение, а их больше, если делать с курсором, то тоже возникает куча вопросов... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:01 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Никита АСоздайте 3 элемента(item) на странице, в которых можно будет выбрать тип товара P10_product_name_1 P10_product_name_2 P10_product_name_3 где "10", не забудьте поменять на номер вашей страницы, а "product_name_1" произвольное название Javlselect p.product_id, p.product_name, p.product_description, p.category, decode(p.product_avail, 'Y','Yes','N','No') product_avail, p.list_price, (select sum(quantity) from demo_order_items where product_id = p.product_id) units, (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales, (select count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers, (select max(o.order_timestamp) od from demo_orders o, demo_order_items i where o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold, p.product_id img, apex_util.prepare_url(p_url=>'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID,P6_BRANCH:'||p.product_id||','||3,p_dialog=> 'null') icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, '<img alt="'||apex_escape.html_attribute(p.product_name)||'" title="'||apex_escape.html_attribute(p.product_name) ||'" style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' ||'src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||'" height="75" width="75" />') detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)) detail_img_no_style, tags from demo_product_info p where p.product_name = :P10_product_name_1 and p.product_name = :P10_product_name_2 and p.product_name = :P10_product_name_3 Но такая конструкция не будет работать, или вместо AND используйте OR, или вообще отбор лучше делать не по названию товара, а по типу В том и дело, я описал для упрощения понимания, на самом деле условий больше, по этому OR не вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:02 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Javl where p.product_name = Условие1 and p.product_name = Условие2 and p.product_name = Условие3 Используйте оператор IN Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:12 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
JavlblkangelЯ изначально не понял проблему. Используйте регион на на SQL запросе, а на PL/SQL Function Body returning SQL Query Пробовал, функция возвращает одно значение, а их больше, если делать с курсором, то тоже возникает куча вопросов... Вам нужно вернуть запрос, обработав все исходные данные со всеми условиями, при чем тут одно значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:13 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Никита АJavl where p.product_name = Условие1 and p.product_name = Условие2 and p.product_name = Условие3 Используйте оператор IN Код: plsql 1.
Только не условие, а значение. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:16 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangelJavlпропущено... Пробовал, функция возвращает одно значение, а их больше, если делать с курсором, то тоже возникает куча вопросов... Вам нужно вернуть запрос, обработав все исходные данные со всеми условиями, при чем тут одно значение? Я пробовал, пишу declare ID NUMBER(10); ..... .... BEGIN даже просто без IF select...... end; При сохранении функция вернула 0 и ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:24 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Никита АJavl where p.product_name = Условие1 and p.product_name = Условие2 and p.product_name = Условие3 Используйте оператор IN Код: plsql 1.
Спасибо, про IN забыл, но мне кажется это полностью не поможет мне наверное нужна функция, но не получается ее указать в репорте. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:28 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Javl, Если Вам нужно добавить условие в sql, используйте конструкцию CASE. Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:28 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Чтобы еще больше упростить понимание задачи: На первой странице 3 поля для выбора, в первом молочка, во втором хлебо-булочные, в третьем вино-водочные. Пользователь может выбрать: молоко, черный хлеб, водку, а может выбрать молоко и сдобную булку, а третье поле пустое. При отборе в репорт у молока есть 5 изображений, нужно выбрать с определенной датой. В таком случае все-таки расширенный селект или функция? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:37 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:39 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangel Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Огромное спасибо, попробую, отпишусь!!!!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 12:44 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Javl, Еще маленький совет, чтобы админ не взгрел, помните про бинды. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 14:14 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangel, ORA-20999: PL/SQL function body did not return a value. declare l_query varchar2(32767); BEGIN l_query:='select p.product_id, p.product_name, p.product_description, p.category, decode(p.product_avail, 'Y','Yes','N','No') product_avail, p.list_price, (select sum(quantity) from demo_order_items where product_id = p.product_id) units, (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales, (select count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers, (select max(o.order_timestamp) od from demo_orders o, demo_order_items i where o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold, p.product_id img, apex_util.prepare_url(p_url=>'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID,P6_BRANCH:'||p.product_id||','||3,p_dialog=> 'null') icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, '<img alt="'||apex_escape.html_attribute(p.product_name)||'" title="'||apex_escape.html_attribute(p.product_name) ||'" style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' ||'src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||'" height="75" width="75" />') detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)) detail_img_no_style, tags from demo_product_info p' if :VOL1 is not null and :VOL2 is not null and :VOL3 is not null then l_query:=l_query; End if; end; Что неправильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 15:36 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Javlblkangel, ORA-20999: PL/SQL function body did not return a value. declare l_query varchar2(32767); BEGIN l_query:='select p.product_id, p.product_name, p.product_description, p.category, decode(p.product_avail, 'Y','Yes','N','No') product_avail, p.list_price, (select sum(quantity) from demo_order_items where product_id = p.product_id) units, (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales, (select count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers, (select max(o.order_timestamp) od from demo_orders o, demo_order_items i where o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold, p.product_id img, apex_util.prepare_url(p_url=>'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID,P6_BRANCH:'||p.product_id||','||3,p_dialog=> 'null') icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, '<img alt="'||apex_escape.html_attribute(p.product_name)||'" title="'||apex_escape.html_attribute(p.product_name) ||'" style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' ||'src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||'" height="75" width="75" />') detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null, apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)) detail_img_no_style, tags from demo_product_info p' if :VOL1 is not null and :VOL2 is not null and :VOL3 is not null then l_query:=l_query; End if; end; Что неправильно? С предыдущим постом разобрался, сейчас ругается на строку где select l_query:='select '; ORA-20999: Parsing returned query results in "ORA-20999: Failed to parse SQL query! <p>ORA-06550: line 4, column 6: ORA-00907: missing right parenthesis</p>". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 16:32 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Экранировать кто будет, а return где? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 16:48 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangelЭкранировать кто будет, а return где? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Спасибо огромное, очень помогли!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! P.s. Правильно ли я понял, что для каждого варианта будет declare l_query varchar2(32767); l_query1 varchar2(32767); l_query2 varchar2(32767); и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2019, 17:39 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
Спасибо, уже разобрался! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 07:58 |
|
Подскажите правильный путь для приложения Apex!
|
|||
---|---|---|---|
#18+
blkangel, К сожаления не нашел как на форуме написать личное сообщение... Хотел бы еще раз поблагодарить за подсказки, реально, очень сильно помогли!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 08:42 |
|
|
start [/forum/search_topic.php?author=bnetrealm&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 628ms |
total: | 890ms |
0 / 0 |