¿Cómo puedo incluir / excluir condicionalmente secciones de texto en mi documento de Word en función del contenido de la base de datos, p. Quiero hacer algo como esto en un documento de Microsoft Word (pseudocódigo):

SI MAYOR QUE 3 ENTONCES

TECNICA

Lenguajes de programación


Sistemas operativos


END

2
Paul Siemons 8 feb. 2017 a las 17:16

2 respuestas

La mejor respuesta

Cuando desee excluir todo el texto que comienza con TECHNICAL y termina en END, también puede agregar un bloque adicional en el modelo que devuelva 0 o 1 filas.

Devuelve 0 filas cuando no se cumple el criterio, devuelve 1 fila cuando se cumple:

select 'ignore' from dual where <BOOLEAN EXPRESSION> 

Por supuesto, deberá reemplazar dual por la tabla singular correspondiente de la plataforma de base de datos utilizada. En las plataformas Oracle e Invantive SQL, siempre hay un dual. En SQL Server puede omitir from dual. En otras plataformas, cree una tabla o consulte algo que se sabe que solo tiene una fila, como una tabla de diccionario de datos específica.

Luego use el nuevo bloque para crear un foreach anidado:

<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>
0
Guido Leenders 8 feb. 2017 a las 17:11

Puede hacerlo de la manera más fácil colocando la verificación de parámetros en un bloque. Si es posible, haga eso en el bloque que contiene los datos, o cree un bloque intermedio para hacerlo.

Por ejemplo, ponga esto en su consulta:

select ...
from   yourtable
where  $P{Level} > 3
0
Patrick Hofman 8 feb. 2017 a las 15:20