2

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

IF <invantive:value-of expression="$P{Level}" /> GREATER THAN 3 THEN

技术的

编程语言

<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

4

2 回答 2

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>
于 2017-02-08T17:11:24.033 回答
0

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

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

select ...
from   yourtable
where  $P{Level} > 3
于 2017-02-08T15:20:35.260 回答