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) 您可以在该限制范围内工作,但从一开始就意识到问题比半途发现要容易得多。
祝你好运!
- 在您的报告查询中添加一列,作为
3 合 1 列行。
- 创建一个新的报告模板,使其成为"named column"样式。
- 使用列的#COLUMN_NAME# 标记创建您想要的两种不同的列格式。
- 使用新标记列的值分别为这两种格式设置条件。
这样做的额外好处是您现在可以使用 HTML 进行您以后需要的任何格式化。
我正在尝试使用 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) 您可以在该限制范围内工作,但从一开始就意识到问题比半途发现要容易得多。
祝你好运!
- 在您的报告查询中添加一列,作为 3 合 1 列行。
- 创建一个新的报告模板,使其成为"named column"样式。
- 使用列的#COLUMN_NAME# 标记创建您想要的两种不同的列格式。
- 使用新标记列的值分别为这两种格式设置条件。
这样做的额外好处是您现在可以使用 HTML 进行您以后需要的任何格式化。