【问题标题】:Limiting lines per page in BI Publisher在 BI Publisher 中限制每页的行数
【发布时间】:2018-03-24 01:19:24
【问题描述】:

我正在使用 RTF 模板创建 BI 报告。我只需要在第一页将行数限制为 3 条记录。剩余的记录/行将继续填充下一页。我还需要打印总页数。我使用下面的代码来限制记录的数量,但是它只打印 1 行。任何帮助将不胜感激。谢谢

<?xdoxslt:set_variable($_XDOCTX, ‘counter’, 0)?>
<?xdoxslt:set_variable($_XDOCTX, ‘lines_page’, 3)?>
<?xdoxslt:set_variable($_XDOCTX, ‘tot_lines’, count(.//PdfDraftPurchaseOrderHeaderVORow))?> 
<?xdoxslt:set_variable($_XDOCTX,’remainder’,0)?>

<?for-each:PdfDraftPurchaseOrderHeaderVORow?>
<?xdoxslt:set_variable($_XDOCTX, ‘counter’, xdoxslt:get_variable($_XDOCTX, ‘counter’)+1)?>
<?if@row:xdoxslt:get_variable($_XDOCTX,’counter’) != xdoxslt:get_variable($_XDOCTX,’tot_lines’)?>
<?if@row:position() mod xdoxslt:get_variable($_XDOCTX, ‘lines_page’) = 0?><?call:breaking?><?end if?><?end if?>
<?end for-each?>

【问题讨论】:

  • 你能发布简化的 XML 吗?

标签: rtf page-break bi-publisher limiting oracle-fusion-apps


【解决方案1】:

如果你想在 n 行之后分页,你可以使用这个语法:

<? if position() mod 3 = 0?> 
<?split-by-page-break:?>
<?end if?>

这将在 3 行之后打破页面,然后在 6 行之后,以此类推,每 3 个倍数。您可以将 3 替换为所需的行数。

顺便说一下 position() 是你的 xml 数据源中的行号。


【讨论】:

    【解决方案2】:

    尝试在 for-each 中使用它

    <?if: position() = 3?> 
    <?split-by-page-break:?>
    <?end if?> 
    

    我做了一个简单的例子,效果很好。我在第一页有 3 条记录,其余的有 6 条。

    至于页面总数,在要求和的元素后面加上这个,TotalFieldName 是总变量的名称,Element 是要求和的 XML 数字元素

    <?add-page-total:TotalFieldName;Element?> 
    

    将此添加到页脚的页脚总数中,其中TotalFieldName 是我们在上面创建的变量,NumberFormat 类似于 9G999D00

    <?show-page-total:TotalFieldName; 'NumberFormat'?>
    

    【讨论】:

    • 您好,我已经修复了按分页符拆分的问题,但页面总数仍在进行中。我发现我添加的数据是字符串格式,所以我尝试将其转换为数字数据类型,但根据 oracle 文档,页面总计功能仅在源 XML co6de 具有原始数值时才有效。数字不得预先格式化。有解决方法吗?感谢您的帮助
    • 我也读过,但我认为没有。不过应该很容易修复 XML 数据定义。
    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多