在Word的Invantive Composition中创建条件块

时间:2017-02-08 14:16:15

标签: ms-word invantive-composition

如何根据数据库的内容有条件地包含/排除Word文档中的文本部分,例如:我想在Microsoft Word文档(伪代码)中执行类似的操作:

IF< invantive:value-of expression =" $ P {Level}" />大于3,然后

技术

编程语言

< invantive:foreach block =" A.languages">< invantive:value-of expression =" $ F {technicalname}" />< / invantive:的foreach>

操作系统

< invantive:foreach block =" B.systems">< invantive:value-of expression =" $ F {technicalname}" />< / invantive:的foreach>
END

2 个答案:

答案 0 :(得分:0)

您可以通过将参数检查放入块中来实现最简单的方法。如果可能,请在包含数据的块中执行此操作,或者创建一个中间块来执行此操作。

例如,将其放在您的查询中:

select ...
from   yourtable
where  $P{Level} > 3

答案 1 :(得分:0)

如果要排除以TECHNICAL开头并以END开头的整段文本,还可以在模型中添加一个返回0或1行的附加块。

当不满足标准时返回0行,满足标准时返回1行:

select 'ignore' from dual where <BOOLEAN EXPRESSION> 

当然,您需要将dual替换为所使用的数据库平台的相应单个表。在Oracle和Invantive SQL平台上,始终存在dual。在SQL Server上,您可以跳过from dual。在其他平台上,创建一个表或查询已知只有一行的内容,如特定的数据字典表。

然后使用新块创建嵌套的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>