You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Print Office Apex的PDF报表中添加单选框、复选框及文本位

Oracle APEX Print Office报表按问题类型渲染不同输入控件

现有数据查询SQL

SELECT
    'file1' AS "filename",
    CURSOR(
        SELECT
            f.FOLLOWUP_TITLE AS "SurveyTitle",
            CURSOR(
                SELECT
                    q.QUESTION_NAME AS "Question",
                    q.QUESTION_TYPE AS "QuestionType", -- 新增字段用于模板判断类型
                    CURSOR(
                        SELECT
                            y.OPTION_NAME AS "Answer"
                        FROM
                            FOLLOWUP_OPTIONS_QUESTION y
                        WHERE
                            y.question_id = q.question_id
                        ORDER BY
                            y.OPTION_NAME
                    ) AS "option"
                FROM
                    FOLLOWUP_QUESTION q
                WHERE
                    f.FOLLOWUP_ID = q.FOLLOWUP_ID
                GROUP BY
                    f.FOLLOWUP_TITLE, q.QUESTION_NAME, q.QUESTION_ID, q.QUESTION_TYPE
                ORDER BY
                    CASE 
                        WHEN q.QUESTION_TYPE = 'Select' THEN 1
                        WHEN q.QUESTION_TYPE = 'Multi select' THEN 2
                        WHEN q.QUESTION_TYPE = 'Text' THEN 3
                        ELSE 4
                    END, q.QUESTION_NAME
            ) AS "questions"
        FROM
            FOLLOWUP_FOLLOWSUP f
        WHERE
            f.FOLLOWUP_ID = :P17_FOLLOWUP_ID
    ) AS "data"
FROM
    DUAL;

现有模板代码

{#questions}
    {Question}
    {#option}
        {Answer}
    {/option}
{/questions}

修改后的模板代码(实现按类型渲染控件)

{#questions}
    <div style="margin-bottom: 12px;">
        <strong>{Question}</strong>
        {#equals QuestionType 'Select'}
            {#option}
                <div style="margin-left: 15px; margin-top: 4px;">
                    <input type="radio" name="q_{Question}" value="{Answer}"> {Answer}
                </div>
            {/option}
        {/equals}
        {#equals QuestionType 'Multi select'}
            {#option}
                <div style="margin-left: 15px; margin-top: 4px;">
                    <input type="checkbox" name="q_{Question}" value="{Answer}"> {Answer}
                </div>
            {/option}
        {/equals}
        {#equals QuestionType 'Text'}
            <div style="margin-left: 15px; margin-top: 4px;">
                <span style="border-bottom: 1px solid #000; padding: 0 60px;">&nbsp;</span>
            </div>
        {/equals}
    </div>
{/questions}

关键说明

  1. SQL修改点:在questions游标查询中新增QuestionType字段,让模板能获取问题类型做条件判断
  2. 模板逻辑:
    • 用{#equals}语法(Print Office原生支持)匹配不同问题类型
    • 单选按钮通过相同name属性实现同一问题的选项互斥
    • 文本输入位用带下划线的span模拟,可通过调整padding值改变输入位长度
    • 增加基础CSS样式优化排版,可根据需求自行调整

内容的提问来源于stack exchange,提问作者najla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:06:06