我在一个页面上有一些包含多个子记录的记录。我在页面上有一个按钮,通过行集通过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方法似乎“更干净”(当然代码更少:-))。有没有办法只复制当前上下文?
由于
答案 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);
请告诉我这是否有效。