是否可以使用按钮更改查询的日期范围(介于date1和date2之间)?基本上,我有一张卡片可以显示总销售额,具体取决于选择了以下哪个按钮:今天,本周,本月。我只想使用一张卡来显示结果。不是隐藏其他卡的肮脏方式。 这适用于Oracle Apex 5.x
谢谢。
答案 0 :(得分:1)
您可以创建两个隐藏的项目(假设是第1页)P1_DATE_FROM
和P1_DATE_TO
,并通过按这些按钮(例如,通过动态操作,使用“设置值”)。
然后查询将是
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
实际包含的内容以及“今天”或“本周”或“本月”的实际情况,可能需要更改这些值。
答案 1 :(得分:0)
好的,所以我尝试了选择列表而不是单选按钮组。现在这是我当前的查询
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语句时,我得到正确的值,所以我想我根据您的评论所做的修改是有效的。
我的问题是刷新我的经典报告(卡片模板)而不刷新整个页面。我在选择列表的Change事件上创建了一个动态操作,然后使用以下设置添加了一个刷新操作...
Action: Refresh
Selection Type: Region
Region: My Report Region
我已将“选择列表”设置为默认值= 3,该值有效。我的报告查询“本月”日期。 现在,当我尝试更改选择列表中的选择时,报告区域会更改数据,但不会更改我需要的预期数据。当我尝试再次更改时,它会重新加载报表区域,但值不会更改。
我确定我在这里遗漏了一些东西。