У меня есть эта таблица со столбцом типа Date, называемым «Creation_Date», который содержит дату создания для каждой строки:
+--------------+--------------+---------------+
| TaskName | Validated_By | Creation_Date |
+--------------+--------------+---------------+
| Task A | Jim | 12/1/2022 |
| Task B | John | 12/1/2022 |
| Task C | Jill | 12/1/2022 |
| Task D | John | 11/30/2022 |
| Task E | John | 11/30/2022 |
| Task F | Bill | 11/30/2022 |
| Task G | Goerge | 11/29/2022 |
| Task H | George | 11/29/2022 |
+--------------+--------------+---------------+
Я хочу, чтобы классический отчет для этой таблицы в Oracle Apex отображался для пользователя следующим образом:
12/1/2022 >
+--------------+--------------+
| TaskName | Validated_By |
+--------------+--------------+
| Task A | Jim |
| Task B | John |
| Task C | Jill |
+--------------+--------------+
И когда они нажимают на стрелку рядом с датой, появляются строки за предыдущий день:
< 11/30/2022 >
+--------------+--------------+
| TaskName | Validated_By |
+--------------+--------------+
| Task D | John |
| Task E | John |
| Task F | Bill |
+--------------+--------------+
И когда они нажимают снова, появляются строки за день до этого и т. д.:
< 11/29/2022 >
+--------------+--------------+
| TaskName | Validated_By |
+--------------+--------------+
| Task G | Goerge |
| Task H | George |
+--------------+--------------+
Есть ли в Oracle Apex встроенный способ сделать это для классического отчета (или для интерактивного отчета, не имеет значения)?
@ Скотт, а что касается аспекта, каким будет его «Тип»?
Как заявляет @Scott, ничего не встроено, но это не должно быть так сложно закодировать (для классического отчета/интерактивного отчета). Убедитесь, что у вас есть элемент P1_DATE
, содержащий дату, для которой отображаются строки.
--- create test data
CREATE TABLE test_data (task, name, dt) AS
(
SELECT 'Task A','Jim', TO_DATE('12/1/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task B','John', TO_DATE('12/1/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task C','Jill', TO_DATE('12/1/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task D','John', TO_DATE('11/30/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task E','John', TO_DATE('11/30/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task F','Bill', TO_DATE('11/30/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task G','Goerge', TO_DATE('11/29/2022','MM/DD/YYYY') FROM DUAL UNION ALL
SELECT 'Task H','George', TO_DATE('11/29/2022','MM/DD/YYYY') FROM DUAL
);
Источником отчета будет:
SELECT task, name, dt FROM test_data WHERE dt = TO_DATE(:P1_DATE,'MM/DD/YYYY');
P1_DATE_PREV
.SELECT MAX(dt) FROM test_data WHERE dt < TO_DATE(:P1_DATE,'MM/DD/YYYY');
SELECT 1 FROM test_data WHERE dt < TO_DATE(:P1_DATE,'MM/DD/YYYY');
P1_PAGE
на P1_PAGE_PREV
P1_DATE_NEXT
.SELECT MIN(dt) FROM test_data WHERE dt > TO_DATE(:P1_DATE,'MM/DD/YYYY');
SELECT 1 FROM test_data WHERE dt > TO_DATE(:P1_DATE,'MM/DD/YYYY');
P1_PAGE
на P1_PAGE_NEXT
У меня есть связанный с этим вопрос: если отчет и кнопки «Далее» и «Назад» находятся в одном регионе, приведет ли обновление только этого региона к повторной проверке условий на стороне сервера для кнопок? Потому что я пробовал, и условия на стороне сервера, похоже, игнорируются.
Условия на стороне сервера оцениваются только во время рендеринга страницы, поэтому то, что вы видите, является ожидаемым поведением. Мое вышеприведенное решение написано в предположении, что вся страница обновляется и используются перенаправления. Если вы хотите обновить только регион, это не сработает. Я считаю, что цель кнопки не изменится при обновлении кнопки. Для решения с частичным обновлением страницы вам необходимо использовать динамические действия для управления состоянием элементов страницы и действиями кнопок/видимостью кнопок. Это немного больше работы
ничего не встроено, но, вероятно, есть несколько вариантов, которые помогут вам в этом. Фасетный поиск может дать вам что-то на желаемом уровне blogs.oracle.com/apex/post/apex-192-faceted-search