Oracle BI Publisher .RTF模板中的嵌套循环

时间:2019-06-12 19:22:35

标签: oracle obiee bi-publisher oracle-bi

我有两个嵌套循环,每个循环使用一个不同的节点来获取数据:

1) <?for-each-group:/DATA/TEST/ROW;./target_test?>  
2) <?for-each:/DATA/TEST2/ROW?>

在第一个组中为每个target_test循环生成一个报告页面,在第二个组中填充一个表。 在这一点上,如果我只有一个target_test,则报告运行良好,但是如果我有更多target_test,则该表将充满所有target_test,而不仅仅是 与上面的循环引用。因此,例如,结果是我的页面的target_test = data1,该表在表中还包含target_test = data2,target_test = data3等。

我的问题是:是否可以通过条件检查第二个循环中的target_test是否等于第一个循环中的目标测试?在这种情况下,我可以简单地隐藏 条件不为真时的表格行。

2 个答案:

答案 0 :(得分:1)

您正在告诉代码执行此操作:

  

对于测试中具有不同target_test值的每一行,循环遍历   TEST2中的行。

所以这是预期的行为。您没有指定外循环target_test应该如何影响内循环。

您可能想要这样的东西:

<?for-each-group:/DATA/TEST/ROW;./target_test?>  
<?for-each:/DATA/TEST2/ROW[target_test=current-group()/target_test]?>
do something
<?end for-each?>
<?end for-each-group?>

如果这样做没有帮助,请提供一个可重现的示例以及数据样本。

答案 1 :(得分:0)

最简单的方法似乎是在外部循环中使用变量,将target_test的值存储到变量(set_variable)中,然后在第二个循环中进行检查。

但是也可以在第二个循环中仅过滤与父循环匹配的记录。使用过滤器(方括号),可以在有变量和无变量的情况下实现。