Oracle Apex - изменение SQL-запроса при нажатии кнопки - PullRequest
0 голосов
/ 05 сентября 2018

Можно ли изменить диапазон дат (от даты1 до даты2) запроса с помощью кнопки? В основном у меня есть одна карта, которая показывает общий объем продаж в зависимости от того, какая из этих кнопок: Сегодня , Эта неделя , В этом месяце . Я хотел бы использовать только 1 карту для отображения результата. Не грязный способ скрыть другие карты. Это относится к Oracle Apex 5.x

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Хорошо, поэтому я попытался сделать это с помощью списка выбора вместо группы переключателей. Теперь это мой текущий запрос

TRUNC(SS.EODATE) BETWEEN
    (CASE
        WHEN :P1_CO_SELECT_LIST = 1 THEN TRUNC(SYSDATE) -1
        WHEN :P1_CO_SELECT_LIST = 2 THEN TRUNC(SYSDATE) -8
        WHEN :P1_CO_SELECT_LIST = 3 THEN TRUNC(SYSDATE, 'MM')
        WHEN :P1_CO_SELECT_LIST = 4 THEN TRUNC(SYSDATE, 'YY')
      END)

    AND SYSDATE

И это то, что мой список статических значений

STATIC:Yesterday;1,This Week;2,This Month;3,This Year;4

Я получаю правильные значения при попытке каждой строки и не использую оператор case, поэтому я думаю, что модификация, которую я сделал из вашего комментария, работает.

Моя проблема заключается в обновлении моего классического отчета (шаблон карты) без обновления всей страницы. Я создал динамическое действие для события «Изменить» в списке выбора, затем добавил действие «Обновить» со следующими настройками ...

Action: Refresh
Selection Type: Region
Region: My Report Region

Я установил для моего списка выбора значение по умолчанию = 3, которое работает. Мой отчет запрашивает дату этого месяца. Теперь, когда я пытаюсь изменить свой выбор в списке выбора, область отчета изменяет данные, но не ожидаемые данные, которые мне нужны. И когда я снова пытаюсь измениться, он перезагружает область отчета, но значения не меняются.

Я уверен, что что-то здесь упущено.

0 голосов
/ 05 сентября 2018

Вы можете создать два скрытых элемента (предположим, это страница 1), P1_DATE_FROM и P1_DATE_TO и установить их значения, нажимая эти кнопки (например, с помощью динамического действия, используя "Set" Значение ").

Тогда запрос будет

where date_column between :P1_DATE_FROM and :P1_DATE_TO

В качестве альтернативы, если вы переключитесь с 3 кнопок на группу радиокнопок с 3 радиокнопками (значения которых 1 = сегодня, 2 = эта неделя, 3 = этот месяц), вы можете переписать ее а

where date_column between 
  case when :P1_RADIO = 1 then trunc(sysdate)
       when :P1_RADIO = 2 then trunc(sysdate) - 7
       when :P1_RADIO = 3 then trunc(sysdate, 'mm')
  end
  --
  and
  --
  case when :P1_RADIO = 1 then trunc(sysdate) + 1
       when :P1_RADIO = 2 then trunc(sysdate) + 1
       when :P1_RADIO = 3 then add_months(trunc(sysdate, 'mm'), 1)
  end

Эти значения, возможно, потребуется изменить, в зависимости от того, что на самом деле содержит DATE_COLUMN, и что на самом деле будет "сегодня", "на этой неделе" или "в этом месяце".

...