我的应用程序(使用Oracle ApEx 4.1)在不同页面上有许多不同的交互式报告。
在每个报告中,我都有分页,但我也被要求提供每个报告,每个报告的页面上显示的总记录总数。
是否有在第0页上执行此功能的方法,或者我是否需要单独计算每个报告的总记录数?
感谢。
=============================
**汤姆 - 在下面发表这个评论时遇到了问题,所以在这里添加了:
嗨,汤姆,正如我之前对你的评论中所提到的,我添加了新的“ p_use_filter ”布尔参数并将其设置为FALSE并且一切正常,所以非常感谢。
现在我确实有另一个查询,不知道这是否仍然是你可能正在处理的事情,但在其中一个IR报告中,在我的where条件下,我正在使用绑定变量但是当我深入研究使用绑定变量STRING传递给另一个报表的报表字段,然后查看后端SQL语句,我收到一个INVALID RELATIONAL OPERATOR错误,因为SQL有一个WHERE条件,如:
WHERE (CUSTOMER_NAME = ABC AIRLINES LTD )
即。它试图在没有单引号的情况下解析SQL ABC AIRLINES LTD ?
任何想法汤姆。
感谢。
答案 0 :(得分:1)
我建议检索IR sql,然后执行包含在SELECT COUNT(*) from (...)
中的SQL
现在,使用apex 4.2,您将获得可以获取报告sql的apex_ir包,但是在4.2之前您没有这样的包。我为自己制作了一个,我已经将它用于了几件事(例如i've blogged a bit about these)。
我为代码的当前状态道歉,因为它需要一些清理,但它是功能性的并且有很多评论。它将解析所有过滤器并再次将它们转换为sql。它不处理计算或分组。它可能会在电缆的某处留下一些扭结,但这可能取决于你想用它做什么。在这种情况下,它不应该是一个问题。
基本上,在您的架构中安装软件包,然后使用这样的代码运行它:
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;
如果你遇到麻烦但无法弄明白,你可以联系我,我会看到我能做些什么。我知道一些代码检修是必要的,但我还没有完成它。
答案 1 :(得分: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