【问题标题】:Dynamic action using date picker in APEX 5.0在 APEX 5.0 中使用日期选择器的动态操作
【发布时间】:2015-12-26 10:12:49
【问题描述】:

我想在 APEX 5.0 中使用日期选择器使用动态操作,以便在选择 start_dateend_date 时,交互式报告应显示所选日期范围的数据。

我首先在 APEX 中创建了一个交互式报告,然后创建了一个带有日期选择器的页面项目。在我的数据库表中,我有一个列名time_stamp,其数据类型为varchar2,日期格式为YYYY-MM-DD-HH24:MI:SS

我对交互式报告的查询如下所示:

Select * from table1 where time_stamp between to_char(to_date(:p1_item,'YYYY-MM-DD-HH24:MI:SS'),'DD-MM-YY') and to_char(to_date(:p2_item,'YYYY-MM-DD-HH24:MI:SS'),'DD-MM-YY')

(其中p1_itemp2_item 是日期选择器的页面项目),我已将日期选择器的“格式掩码”属性设置为DD-MM-YY。现在,我需要定义一个动态操作,以根据所选的start_dateend_date 执行我的交互式报表SQL 查询。我需要进一步了解创建此类动态操作的步骤,并查找需要设置哪些属性才能实现此操作的详细步骤。

【问题讨论】:

  • 您好,为了清楚起见,您是否要根据上述查询制作一个显示数据的交互式报告?
  • 是的,我正在尝试根据日期范围显示交互式报告。

标签: oracle-apex oracle-apex-5


【解决方案1】:

让页面上的数据加载的更好方法是在每个日期选择器下创建一个动态操作。对于每个日期选择器动态操作,将 event 设置为 change;将其设置为 actionExecute Pl/SQL code 并创建另一个真正的 action 并将其设置为 refresh

对于 Execute Pl/SQL 代码,放入其代码:

BEGIN
  null;
END;

并将 要提交的页面项目设置为 :p1_item(和 :P2_item 为其对应的动态操作)。

对于 refresh 操作,将 Selection Type 设置为“region”,然后将 region 设置为您的交互式报告。

您的查询应该像@Vance 所说的那样:

  Select * from table1 
  where  
  (:p1_item is null and :p2_item is null) or time_stamp
  between to_date(:p1_item,'DD-MM-YY') and 
  to_date(:p2_item,'DD-MM-YY')

随着您的页面变得更加复杂,并且您可能不想从一个日期选择提交整个页面,这样做会很有好处。由于您不必等待整个页面重新加载,因此速度也更快。

【讨论】:

    【解决方案2】:

    要开始,请将您的交互式报告查询更改为:

              Select * from table1 
              where  
              (:p1_item is null and :p2_item is null) or time_stamp
              between to_date(:p1_item,'DD-MM-YY') and 
              to_date(:p2_item,'DD-MM-YY')
    

    然后在您的 p2_item 下创建一个动态操作。将其event 设置为“更改”,然后将其true 操作设置为“提交页面”

    【讨论】:

    • 我已经完成了您提到的操作,但是在从日期选择器中选择 start_date 和 end_date 时它没有显示任何记录。我是否需要为交互式报告设置任何其他属性,例如 FORMAT MASK、Post Calculation Computation 等?
    • 哦,对了@Mukul Sharma。我已根据我的答案更新了您的交互式报告的 sql 源。您还必须将日期选择器的 FORMAT MASK 设置为 DD-MM-YY
    • 仍然没有帮助。表中的 time_stamp 列是 varchar2 数据类型 - 不需要从 varchar 转换为日期格式吗?以及在计算后计算中设置什么?
    • 您不必在Post Calculation Computation 上设置任何内容。您必须将 time_stamp 列更改为日期类型才能使其工作。它不起作用的原因是因为您当前的交互式报表 sql 源的 between 运算符将其评估为两个字符串,而不是两个日期
    • 我可以在我的 sql 查询中对 time_stamp 使用日期转换,而不是将数据类型更改为 date 吗?
    猜你喜欢
    • 2016-01-04
    • 2016-01-03
    • 1970-01-01
    • 2022-07-05
    • 2018-04-24
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多