在BI Publisher RTF模板的子重复项中引用父组项

我的项目需要能够在子组的重复部分中引用父组中的字段。 Here's the setup.我已经标记了每个位置:AB和C用于我自己的测试目的。 D是实际需要打印的那个。 A是唯一实际打印的。令人困惑的部分是,“ for-each-check”组在每个Q_P58W1(P58WCHCK是成员)上循环,但仅在该组之外打印。

为便于记录,实际文档中的每个for-each组之后都没有该代码,我只是将其粘贴到此处以明确分组结构的工作方式。

这是我正在使用的xml的副本(已编辑以删除敏感信息):

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Oracle BI Publisher 12.2.1.3.0 -Dataengine,datamodel:_ICIM_DM_P58R01_DM_xdm -->
<DATA_DS><P_JNO_IN>271720364</P_JNO_IN>
<Q_A01F>
<A01SEQ>1</A01SEQ><VOID_LINE1>VOID     VOID     VOID     VOID     VOID</VOID_LINE1><VOID_LINE2>    VOID     VOID     VOID     VOID</VOID_LINE2><LOCATION_IN>0005</LOCATION_IN><AHL1>03</AHL1><accOUNT_IN>290</accOUNT_IN>
<Q_P58W1>
<P58WCHCK>09077475</P58WCHCK>
<G_1>
<P58WVENNO>93373</P58WVENNO><P58WNAME1>FASTSIGNS</P58WNAME1><P58WADR1></P58WADR1><P58WCSZ></P58WCSZ><P58WPAYN>$12.00</P58WPAYN><P58WPAYW1>Twelve Dollars and 00 Cents*****</P58WPAYW1><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><P58WCDATE>11 21 19</P58WCDATE><C_PRT_CHK></C_PRT_CHK><PAY_WORDS1>Twelve Dollars and 00 Cents*****</PAY_WORDS1><ADR_LINE1>FASTSIGNS</ADR_LINE1><ADR_LINE3></ADR_LINE3><ADR_LINE6></ADR_LINE6><accOUNT_NAME></accOUNT_NAME><COUNTRY></COUNTRY><ADDRESS1></ADDRESS1><ADDRESS2></ADDRESS2><ADDRESS3>VOID VOID VOID</ADDRESS3><CITY></CITY><STATE></STATE><ZIP></ZIP><DUMMY_flaG>DUMMY</DUMMY_flaG><LOGO_flaG></LOGO_flaG><ADR_LInes>FASTSIGNS


</ADR_LInes>
<Q_P58W2>
<P58WINVNO>12</P58WINVNO><P58WVOUCH>637866</P58WVOUCH><P58WIDATE>2019-11-22T00:00:00.000-06:00</P58WIDATE><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><C_PRT_DATE>11/22/19</C_PRT_DATE>
</Q_P58W2>
<C_PRT_PAY_TOT>$12.00</C_PRT_PAY_TOT>
<CS_NUM_VOUCHERS>1</CS_NUM_VOUCHERS>
</G_1>
<G_1>
<P58WVENNO>93373</P58WVENNO><P58WNAME1>FASTSIGNS</P58WNAME1><P58WADR1></P58WADR1><P58WCSZ></P58WCSZ><P58WPAYN>$12.00</P58WPAYN><P58WPAYW1>Twelve Dollars and 00 Cents*****</P58WPAYW1><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><P58WCDATE>11 21 19</P58WCDATE><C_PRT_CHK></C_PRT_CHK><PAY_WORDS1>Twelve Dollars and 00 Cents*****</PAY_WORDS1><ADR_LINE1>FASTSIGNS</ADR_LINE1><ADR_LINE3></ADR_LINE3><ADR_LINE6></ADR_LINE6><accOUNT_NAME></accOUNT_NAME><accOUNT_NUMber></accOUNT_NUMber><ROUTING_NUMber></ROUTING_NUMber><COUNTRY></COUNTRY><ADDRESS1></ADDRESS1><ADDRESS2></ADDRESS2><ADDRESS3>VOID VOID VOID</ADDRESS3><CITY></CITY><STATE></STATE><ZIP></ZIP><DUMMY_flaG>NORMAL</DUMMY_flaG><LOGO_flaG></LOGO_flaG><ADR_LInes>FASTSIGNS


</ADR_LInes>
<Q_P58W2>
<P58WINVNO>12</P58WINVNO><P58WVOUCH>637866</P58WVOUCH><P58WIDATE>2019-11-22T00:00:00.000-06:00</P58WIDATE><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><C_PRT_DATE>11/22/19</C_PRT_DATE>
</Q_P58W2>
<C_PRT_PAY_TOT>$12.00</C_PRT_PAY_TOT>
<CS_NUM_VOUCHERS>1</CS_NUM_VOUCHERS>
</G_1>
</Q_P58W1>
</Q_A01F>
<CF_PROPERTIES>
<REPORT_NAME>P58R01</REPORT_NAME><REPORT_DESCRIPTION>Check Print And Update</REPORT_DESCRIPTION><VERSION_NUMber>V11.0.001</VERSION_NUMber><DATABASE_NAME>DEV</DATABASE_NAME><USER_NAME></USER_NAME><RUN_DATE>2019-11-22T10:39:20.000-06:00</RUN_DATE>
</CF_PROPERTIES>
</DATA_DS>
luilaoshuihao 回答:在BI Publisher RTF模板的子重复项中引用父组项

很难准确地说出您想要什么,但我想我理解。只需为要上移的每个级别使用../

XML示例:

<LIST_PARENT>
   <PARENT>
      <PARENT_NUMBER>1</PARENT_NUMBER>
      <PARENT_ATTRIBUTE>A</PARENT_ATTRIBUTE>
      <LIST_CHILD>
         <CHILD>
            <CHILD_NUMBER>1</CHILD_NUMBER>
            <CHILD_ATTRIBUTE>A</CHILD_ATTRIBUTE>
         </CHILD>
         <CHILD>
            <CHILD_NUMBER>2</CHILD_NUMBER>
            <CHILD_ATTRIBUTE>B</CHILD_ATTRIBUTE>
         </CHILD>
      </LIST_CHILD>
   </PARENT>
   <PARENT>
      <PARENT_NUMBER>2</PARENT_NUMBER>
      <PARENT_ATTRIBUTE>B</PARENT_ATTRIBUTE>
      <LIST_CHILD>
         <CHILD>
            <CHILD_NUMBER>1</CHILD_NUMBER>
            <CHILD_ATTRIBUTE>A</CHILD_ATTRIBUTE>
         </CHILD>
         <CHILD>
            <CHILD_NUMBER>2</CHILD_NUMBER>
            <CHILD_ATTRIBUTE>B</CHILD_ATTRIBUTE>
         </CHILD>
      </LIST_CHILD>
   </PARENT>
</LIST_PARENT>

RTF代码:

<for-each:PARENT>
   Parent Number: <PARENT_NUMBER>
   Parent Attribute: <PARENT_ATTRIBUTE>
   <for-each:CHILD>
      Child Number: <CHILD_NUMBER>
      Child Attribute: <CHILD_ATTRIBUTE>
      Parent Number: <../../PARENT_ATTRIBUTE>
   <end for-each>
<end for-each>
,

以下作品:

<?for-each:Q_P58W1?>
    <?P58WCHCK?>
<?end for-each?>

添加重复组for-each-check时,您已经在Q_P58W1上循环。 FOProcessor只是将其解释为<?for-each:Q_P58W1?>。然后,您在文本中添加了另一个<?for-each:Q_P58W1?>,但是FOProcessor对此解释方式相同。

这使您的示例代码:

<?P58WCHCK?>
<?for-each:Q_P58W1?><?for-each:Q_P58W1?>
    <?P58WCHCK?>
    ...
<?end for-each?>

在您的示例中,您不清楚如何关闭for-each循环。如果两次都没有关闭for-each循环,则语法不正确。如果您确实关闭了它,那么您将尝试打印不存在的Q_P58W1/Q_P58W1/P58WCHCK

解决方案: 删除文本<?for-each:Q_P58W1?><?for-each:G_1?>,并删除匹配的<?end for-each?>(如果适用)。

,

多看了一遍,我找到了答案。我想包含在子组中的元素Q_P58W1 / P58WCHCK-拒绝在<?for-each:G_1?>循环中打印,因此我更改了BI Publisher数据模型,以便查询两次选择了支票号,作为两个不同的元素具有不同的别名。其中之一P58WCHCK仍作为Q_P58W1下的单个元素分组,因为这是必需的功能。另一个刚成为子组每一行的一部分。 Here's a screenshot of the data model box for clarity.

本文链接:https://www.f2er.com/3049188.html

大家都在问