在 Invantive Composition for Word 中创建条件块
Creating conditional blocks in Invantive Composition for Word
我如何根据数据库的内容有条件地 include/exclude Word 文档中的文本部分,例如我想在 Microsoft Word 文档中做这样的事情(伪代码):
如果 大于 3 那么
技术
编程语言
操作系统
END
您可以通过将参数检查放在块中来实现最简单的方法。如果可能,在包含数据的块中执行此操作,或创建一个中间块来执行此操作。
例如,将此放入您的查询中:
select ...
from yourtable
where $P{Level} > 3
当您想要排除以 TECHNICAL
开头并以 END
结尾的整段文本时,您还可以在模型中添加一个额外的块,其中 returns 0或 1 行。
Return 不满足条件时 0 行,return 满足条件时 1 行:
select 'ignore' from dual where <BOOLEAN EXPRESSION>
当然,您需要将dual
替换为所用数据库平台对应的单数table。在 Oracle 和 Invantive SQL 平台上,总有一个 dual
。在 SQL 服务器上,您可以跳过 from dual
。在其他平台上,创建 table 或查询已知只有一行的内容,例如特定数据字典 table.
然后使用新块创建一个嵌套的foreach:
<invantive:foreach block="FILTERBLOCK">
TECHNICAL
Programming Languages
<invantive:foreach block="A.languages"><invantive:value-of expression="$F{technicalname}"/></invantive:foreach>
Operating Systems
<invantive:foreach block="B.systems"><invantive:value-of expression="$F{technicalname}"/></invantive:foreach>
</invantive:foreach>
我如何根据数据库的内容有条件地 include/exclude Word 文档中的文本部分,例如我想在 Microsoft Word 文档中做这样的事情(伪代码):
如果
技术
编程语言
操作系统
END
您可以通过将参数检查放在块中来实现最简单的方法。如果可能,在包含数据的块中执行此操作,或创建一个中间块来执行此操作。
例如,将此放入您的查询中:
select ...
from yourtable
where $P{Level} > 3
当您想要排除以 TECHNICAL
开头并以 END
结尾的整段文本时,您还可以在模型中添加一个额外的块,其中 returns 0或 1 行。
Return 不满足条件时 0 行,return 满足条件时 1 行:
select 'ignore' from dual where <BOOLEAN EXPRESSION>
当然,您需要将dual
替换为所用数据库平台对应的单数table。在 Oracle 和 Invantive SQL 平台上,总有一个 dual
。在 SQL 服务器上,您可以跳过 from dual
。在其他平台上,创建 table 或查询已知只有一行的内容,例如特定数据字典 table.
然后使用新块创建一个嵌套的foreach:
<invantive:foreach block="FILTERBLOCK">
TECHNICAL
Programming Languages
<invantive:foreach block="A.languages"><invantive:value-of expression="$F{technicalname}"/></invantive:foreach>
Operating Systems
<invantive:foreach block="B.systems"><invantive:value-of expression="$F{technicalname}"/></invantive:foreach>
</invantive:foreach>