Oracle Apex如何动态添加内容和类型不同的经典报表行

时间:2015-03-24 08:21:25

标签: oracle oracle-apex

我正在尝试使用Oracle Apex中的经典报告动态创建360问卷。第一部分使用以下内容很好地工作:

SELECT q.display_text,
       apex_item.radiogroup(rownum, 1, a.answer, null, null, null, null) "ineffective",
       apex_item.radiogroup(rownum, 2, a.answer, null, null, null, null) "sometimes"
FROM   xxpay_360_questions q,
       xxpay_360_answers   a
where  a.question_id (+) = q.question_id
and    a.user_name (+) = :APP_USER
order  by q.questionnaire_id, 
       q.display_sequence

这将输出3个报告列。第一个是问题,第二个是用于选择答案1或2的水平单选按钮.360调查问卷还需要部分和子部分以及一些textarea问题。对于那些我想将3个报告列合并为1列(类似于colspan = 1)。我可能需要在上面的select中使用union输出它们,但我不确定如何动态输出colspan和单个报告列值。

请注意,我使用主题20以获得Oracle Applications外观并使用表格布局。

任何人都知道如何为某些行输出单个报告列而不是3,然后colspan = 1呢?更改部分和子部分的字体将是一个奖励。

使用表格布局时,不确定css是否可以执行colspan。

3 个答案:

答案 0 :(得分:1)

  1. 在报告查询中添加一列,作为该标志的标志 3列1列。
  2. 创建一个新的报告模板,使其成为“命名列”样式。
  3. 使用#COLUMN_NAME#token for columns创建所需的两种不同列格式。
  4. 使用新标志列的值为这两种格式设置条件。

  5. 这样做的另一个好处是,您现在可以使用HTML来执行您最终需要的格式化。

答案 1 :(得分:0)

我做了以下 测试表:

create table tst as
select 1 a, 2 b, 3 c, 4 d, 5 e from dual
 union all
select 11, 12, 13, null, null from dual
 union all
select 21, 22, 23, 24, 25 from dual;

地区来源:

select a, b, 
  case when d is null and e is null then
       '<td colspan="3">' || c || '</td>'
       else '<td>' || c || '</td><td>' || d || '</td><td>' || e || '</td>'
  end merged_column
 from tst

报告属性:Display as - Standard Display Column,列标题merged_column

<th>C</th><th>D</th><th>E</th>

结果如下所示:

enter image description here

也许它不是那么酷且有用的例子,但是第二行中的单元看起来是合并的(当然它们真的是合并的)。此外,无法按第4列和第5列排序,您需要手动对齐文本 抱歉,无法提供该页面的链接,apex.oracle.com已升级到5.0版,4.2版现已无法使用。

答案 2 :(得分:0)

我希望我有更多时间来编写一个正确的示例,但您可以使用Oracle的LISTAGG函数将每个问题的答案分组为一行,并为样式添加一些HTML标记。一般来说,我生成这样的东西:

<SPAN TITLE="Some help text">Some question text?</SPAN>
 <UL>
    <LI>[RADIO group1 value1] radio_label1</LI>
    <LI>[RADIO group1 value2] radio_label2</LI>
 </UL>

希望您可以将此示例用作编码所需内容的起点。

顺便说一句,我应该指出你想要做的一个潜在问题。您可能已经意识到这一点,但是,通过这种方法,Apex一次只能显示不超过50个问题,因为p_idx的值必须是1到50之间的整数。(来源:Apex documentation你可以在这个限制范围内工作,但从一开始就意识到这个问题要比在中途发现它容易得多。

祝你好运!