如何在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;"> </span> </div> {/equals} </div> {/questions}
关键说明
- SQL修改点:在
questions游标查询中新增QuestionType字段,让模板能获取问题类型做条件判断 - 模板逻辑:
- 用
{#equals}语法(Print Office原生支持)匹配不同问题类型 - 单选按钮通过相同
name属性实现同一问题的选项互斥 - 文本输入位用带下划线的span模拟,可通过调整
padding值改变输入位长度 - 增加基础CSS样式优化排版,可根据需求自行调整
- 用
内容的提问来源于stack exchange,提问作者najla
相关产品推荐
相关产品推荐

