PeopleSoft Rowset仅复制当前行

时间:2012-05-17 15:03:12

标签: xml peoplesoft publisher rowset

我在一个页面上有一些包含多个子记录的记录。我在页面上有一个按钮,通过行集通过XML Publisher触发报告。我遇到的问题是我传递给报告的行集包含缓冲区中的所有内容 - 我只想在报告中显示当前上下文。我现在拥有的:

&rs_resp = CreateRowset(Record.AVZ_JD_RESP_TBL);
&rs_expr = CreateRowset(Record.AVZ_JD_EXPR_TBL);
&rs_skls = CreateRowset(Record.AVZ_JD_SKLS_TBL);
&rs_dtl = CreateRowset(Record.AVZ_JD_DTL_TBL, &rs_resp, &rs_expr, &rs_skls   

& RS0 = GetLevel0()。GetRow(1)。GetRowset(Scroll.AVZ_JD_DTL_TBL);
   &安培; RS0.CopyTo(安培; rs_dtl);

然后我开始报告:

&oReportDefn.SetRuntimeDataRowset(&rs_dtl);   
&oReportDefn.ProcessReport(&MyTemplate, &LanguageCd, &AsOfDate, &OutFormat);

我以前在每个行集(父和子)上都使用了Rowset.Fill,但我的copyto方法似乎“更干净”(当然代码更少:-))。有没有办法只复制当前上下文?

由于

2 个答案:

答案 0 :(得分:1)

如果我理解这个问题,你可以这样做:

Getrow().Copyto(&rs_dtl(1));

答案 1 :(得分:0)

我认为在执行行集复制时会复制所有行 -
&RS0.CopyTo(&rs_dtl);

您可以通过在for-each循环中使用分页符(您将用于遍历模板中的行集)来控制为报表上的每一行创建新页面:
<?split-by-page-break:?>

如果您只想打印最新的effdt行,请仅将最新的effdt行复制到&amp; rs_dtl行集。 您可以通过首先使用
基于键对&amp; RS0行集进行排序来完成此操作 &RS0.sort(keyfield1,keyfield2,"A");

然后遍历排序的行集,检查给定的一组键的max effdt。

使用插入行功能将行插入&amp; rs_dtl &rs_dtl.Insertrow(&rownumber);

请告诉我这是否有效。