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

Oracle Apex how to dynamically add classic report rows that vary in content and type

我正在尝试使用 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 个报告列。第一个是问题,第二个是 select 回答 1 或 2 的水平单选按钮。360 问卷还需要部分和子部分以及一些文本区域问题。对于那些我想将 3 个报告列合并为 1 个列(类似于 colspan=1)。我可能需要在上面 select 中使用联合来输出它们,但我不确定如何动态输出 colspan 和单个报告列值。

请注意,我使用主题 20 以获得 Oracle 应用程序的外观,这使用 table 布局。

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

不确定 css 在使用 table 布局时是否可以进行 colspan。

我已关注
测试 table:

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>

结果如下所示:

也许它不是那么酷和有用的例子,但第二行的单元格看起来合并了(当然,它们确实合并了)。此外,无法按第 4 列和第 5 列排序,您需要手动对齐那里的文本。
抱歉,无法给页面link,apex.oracle.com升级到5.0版本,4.2版本暂时无法使用。

我希望我有更多时间来编写一个合适的示例,但是您可以使用 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) 您可以在该限制范围内工作,但从一开始就意识到问题比半途发现要容易得多。

祝你好运!

  1. 在您的报告查询中添加一列,作为 3 合 1 列行。
  2. 创建一个新的报告模板,使其成为"named column"样式。
  3. 使用列的#COLUMN_NAME# 标记创建您想要的两种不同的列格式。
  4. 使用新标记列的值分别为这两种格式设置条件。

这样做的额外好处是您现在可以使用 HTML 进行您以后需要的任何格式化。