首页 > 解决方案 > Oracle Apex - 按下按钮时更改 SQL 查询

问题描述

是否可以使用按钮更改查询的日期范围(在 date1 和 date2 之间)?基本上,我有一张卡片显示总销售额,具体取决于选择了今天本周本月这些按钮中的哪一个。我只想使用 1 张卡片来显示结果。不是隐藏其他卡片的肮脏方式。这适用于 Oracle Apex 5.x

谢谢。

标签: oracleoracle-apex-5

解决方案


您可以创建两个隐藏项(假设它是第 1 页),P1_DATE_FROMP1_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真正包含的内容,以及“今天”或“本周”或“本月”的真正含义。


推荐阅读