1

我的应用程序中有许多不同的交互式报表(使用 Oracle ApEx 4.1),位于不同的页面上。

在每份报告中,我都有分页,但我还被要求在每份报告中提供记录总数,显示在每个报告页面的某个位置。

是否有办法在第 0 页上执行此功能,或者我是否需要分别计算每个报告的总记录?

谢谢。

==============================

**Tom - 将此评论放在下方时遇到问题,因此在此处添加:

嗨,汤姆,正如我之前对您的评论中提到的,我添加了新的“ p_use_filter ”布尔参数并将其设置为 FALSE,一切正常,非常感谢。

现在我确实有另一个查询要给您,但不确定这是否仍然是您可能正在处理的事情,但是在我的 where 条件下,在其中一个 IR 报告中,我使用的是绑定变量,但是当我深入研究报告字段时将绑定变量 STRING 传递给另一个报告,然后查看后端 SQL 语句,我收到 INVALID RELATIONAL OPERATOR 错误,因为 SQL 具有 WHERE 条件,例如:

WHERE (CUSTOMER_NAME = ABC AIRLINES LTD )

即它试图在没有单引号的情况下解析ABC AIRLINES LTD周围的 SQL ?

任何想法汤姆。

谢谢。

4

2 回答 2

2

我建议检索 IR sql,然后执行包装在SELECT COUNT(*) from (...).
现在,在 apex 4.2 中,您可以获得 apex_ir 包,它可以获取报告 sql,但在 4.2 之前的版本中,您没有这样的包。我为自己做了一个,我已经用它做了几件事(例如,我写了一些关于这些的博客)。我为代码的当前状态道歉,因为它需要一些清理,但它是功能性的,并且有很多评论。它将解析所有过滤器并将它们再次转换为 sql。它不处理计算或分组。它可能会在某处的电缆中留下一些扭结,但这可能取决于您想用它做什么。在这种情况下,它应该不是问题。

git链接

基本上,在你的模式中安装包,然后使用这样的代码来运行它:

DECLARE
   lNullTable  DBMS_SQL.VARCHAR2_TABLE;
   lDebug      VARCHAR2(4000);
   lSql        VARCHAR2(4000);
   lCount      NUMBER;
BEGIN
   lSql := apex_ir_pkg.get_ir_sql
      (
         p_app_id             => :APP_ID,
         p_session_id         => :APP_SESSION,
         p_page_id            => :APP_PAGE_ID,
         p_report_id          => NULL,
         p_app_user           => :APP_USER,
         p_use_session_state  => TRUE,
         p_binds              => lNullTable,
         p_binds_val          => lNullTable,
         p_incl_order_by      => FALSE,
         p_debug              => lDebug,
      );

   lSql := 'SELECT count(*) FROM ('||lSql||')';

   EXECUTE IMMEDIATE lSql INTO lCount;
END;

如果您确实遇到了一些麻烦并且无法解决,您可以联系我,我会看看我能做些什么。我知道一些代码大修是必要的,但我还没有得到它。

于 2012-11-26T20:08:53.227 回答
0

您可以在区域的页眉或页脚中使用#TOTAL_ROWS#,但它只会显示初始值。我将它用于经典报告。我不认为它与 IR javascript 配合得很好。这是部分页面刷新。请参阅:https ://forums.oracle.com/forums/thread.jspa?threadID=2239712和http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21674/ui_region.htm#CHDBCGJH

于 2012-11-22T18:20:03.840 回答