【问题标题】:Oracle Apex how to dynamically add classic report rows that vary in content and typeOracle Apex 如何动态添加内容和类型不同的经典报表行
【发布时间】:2015-03-26 12:34:44
【问题描述】:

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

请注意,我使用主题 20 是为了获得 Oracle 应用程序的外观,这使用了表格布局。

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

不确定css在使用表格布局时是否可以做colspan。

【问题讨论】:

    标签: oracle oracle-apex


    【解决方案1】:
    1. 在您的报告查询中添加一列,该列将用作 3 合 1 列行。
    2. 创建一个新的报告模板,使其成为“命名列”样式。
    3. 使用列的#COLUMN_NAME# 标记创建两种不同的列格式。
    4. 使用新标志列的值设置这两种格式的条件。

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

    【讨论】:

      【解决方案2】:

      我做了以下。
      测试表:

      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 列排序,您需要在此处手动对齐文本。
      抱歉,无法提供页面链接,apex.oracle.com 升级到 5.0 版,4.2 版现在不可用。

      【讨论】:

      • 遗憾的是这对我不起作用,因为它只是在表格单元格中插入表格单元格并破坏了整个流程。虽然我确实认为也许我需要吐出完整的自定义 html。还是谢谢。
      • @Superdooperhero 你能手动制作你想要的 HTML 代码的简单示例吗?
      【解决方案3】:

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

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多