使用RTF模板动态生成列

时间:2015-03-30 12:45:06

标签: oracle plsql pivot rtf oraclereports

我有一个查询,它给出了这样的输出......

EMPLOYEE_NUMBER,NAME,QUESTION,ANSWER。

我需要在这样的报告中显示这些信息

员工人数| NAME |问题01 |问题02 |问题03 ......

在这些问题列中,应显示员工对该特定问题的答案。

这些问题列应该是动态生成的,因为问题不会随时改变。我在查询中使用PIVOT / UNPIVOT来处理这个问题,除了rtf模板外,一切都很好。

我使用Oracle报表生成器创建报表,RTF模板用于格式化。最后将这些.rdf文件和.rtf文件上传到oracle应用程序。在oracle应用程序中,rtf out put设置为Excel。这样用户就可以将报告下载为Excel文件。

所以我试图通过使用RTF模板实现这一目标......

在第一栏的第一栏EMPLOYEE_NUMBER:

<?for-each-group@section:G_EMPLOYEE_NUMBER;./ EMPLOYEE_NUMBER?>  <?variable@incontext:IND;EMPLOYEE_NUMBER?>

在QUESTION列中(最后一列是动态的)标题:

<?for-each-group@column: G_EMPLOYEE_NUMBER;QUESTION?>

在QUESTION专栏的第一个单元格中:

<?for-each-group@cell://G_EMPLOYEE_NUMBER;QUESTION?>
<?current-group()[EMPLOYEE_NUMBER=$IND]/ANSWER?>

但这并不能提供所需的输出。在.rtf模板中似乎有些不对劲,甚至输出也没有出现在Excel中。它只是在浏览中打开,列没有正确显示。有什么想法吗?您是否在上述代码中看到任何错误?

注意: G_EMPLOYEE_NUMBER是报告中的分组名称。 我是这些技术的新手。

xml中连续的示例数据:

<Row>
<Employee_Number>5001419</Employee_Number>
<Name>David Fernando</Name>
<Question>I'm able to use internal systems to find information on policies/people/projects</Question>
<Answer>b. Agree</Answer>          
</Row>

1 个答案:

答案 0 :(得分:0)

sample RTF示例数据:<DATA_DS><P_LDG></P_LDG><P_UDT>ANNUAL_PERFORMANCE_GRID</P_UDT><G_1><BASE_USER_TABLE_NAME>ANNUAL_PERFORMANCE_GRID</BASE_USER_TABLE_NAME<BASE_USER_COLUMN_NAME>LE_MIN</BASE_USER_COLUMN_NAME><ROW_LOW_RANGE_OR_NAME>INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROW_LOW_RANGE_OR_NAME><VALUE>0.00</VALUE><LDG>IN Legislative Data Group</LDG><VALUE_ORIG>0.00</VALUE_ORIG><ROWNAME>IN Legislative Data Group|INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROWNAME></G_1><G_1><BASE_USER_TABLE_NAME>ANNUAL_PERFORMANCE_GRID</BASE_USER_TABLE_NAME><BASE_USER_COLUMN_NAME>TARGET_TYPE</BASE_USER_COLUMN_NAME><ROW_LOW_RANGE_OR_NAME>INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROW_LOW_RANGE_OR_NAME><VALUE>1</VALUE><LDG>IN Legislative Data Group</LDG><VALUE_ORIG>Percentage Base</VALUE_ORIG><ROWNAME>IN Legislative Data Group|INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROWNAME></G_1><G_1><BASE_USER_TABLE_NAME>ANNUAL_PERFORMANCE_GRID</BASE_USER_TABLE_NAME><BASE_USER_COLUMN_NAME>PT_DEDUCTION</BASE_USER_COLUMN_NAME><ROW_LOW_RANGE_OR_NAME>INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROW_LOW_RANGE_OR_NAME><VALUE>1</VALUE><LDG>IN Legislative Data Group</LDG><VALUE_ORIG>Y</VALUE_ORIG><ROWNAME>IN Legislative Data Group|INR.ALL.9581.ALL.ALL.ALL.ALL.1.1.ALL.ALL</ROWNAME></G_1></DATA_DS>