Jaspersoft Studio – Comment vérifier la présence d’un nombre dans une liste ?

  • Créer une variable contenant la liste des nombres
    • dans l’onglet « outline », clic droit sur les « Variables »
    • « créer variable »
    • Dans les propriétés de la variable créée:
      • Nom : modifier le nom si besoin
      • Nom de Classe de Valeur : java.util.List
      • Calcul : Rien
      • Expression : Arrays.asList(8,9,10,11,12,13,14) (par exemple)
      • expression Valeur Initiale : vide
      • Type d’Incrémentation : Aucun
      • Nom de Classe Usine d’Incrémentation : vide
      • Type de Réinitialisation : Rapport
  • Ecrire la formule de test d’appartenance
    • $V{Variable_1}.contains( 110 ) (est -ce que « 110 » appartient à la liste ? Si oui alors True sinon False. Ici c’est False.
  • le test échouera avec un nombre de type float. En effet, avec 11.25, le test donnera false et c’est exact car il ne fait pas partie de la liste.
  • donc, si on veut tester l’appartenance d’un chiffre avec décimale, on peut tricher un peu.
    • on passe du type float au type integer : avec Variable_2float = new Float ( 11.25 )
      • $V{Variable_2float}.intValue())
    • et on repasse la formule de départ ainsi : $V{Variable_1}.contains( ($V{Variable_2float}.intValue()))
    • sachant que ($V{Variable_2float}.intValue()) = 11
    • on obtient True car 11 fait partie de la liste.
  • mais attention, il faudra tenir compte de la borne supérieure car 14.25 ne fait pas partie de la liste sauf si on considère qu’on va de 8 inclus à 15 exclu 😁.
  • Le code pour essayer et trouver une autre solution :
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.12.2.final using JasperReports Library version 6.12.2-75c5e90a222ab406e416cbf590a5397028a52de3  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_2" pageWidth="595" pageHeight="842" orientation="Landscape" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="1f68fb4f-6da6-4932-850b-a5ca5d24043a">
	<queryString>
		<![CDATA[]]>
	</queryString>
	<variable name="Variable_1" class="java.util.List">
		<variableExpression><![CDATA[Arrays.asList(8,9,10,11,12,13,14)]]></variableExpression>
	</variable>
	<variable name="Variable_2float" class="java.lang.Float">
		<variableExpression><![CDATA[new Float ( 14.259653145 )]]></variableExpression>
	</variable>
	<background>
		<band splitType="Stretch"/>
	</background>
	<detail>
		<band height="221" splitType="Stretch">
			<textField>
				<reportElement x="0" y="0" width="316" height="30" uuid="6ef6aa18-abdd-4d38-8c56-4995158a08ba"/>
				<textFieldExpression><![CDATA[$V{Variable_1}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement mode="Opaque" x="0" y="30" width="316" height="30" backcolor="#FF99CC" uuid="7f4b880a-d468-441d-afe7-8eec0dde1406"/>
				<textFieldExpression><![CDATA[$V{Variable_1}.contains( 11.25 )]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement mode="Opaque" x="0" y="100" width="316" height="30" backcolor="#CCFF66" uuid="f45aacaa-c3f9-46ea-9d90-b10e7a834f83"/>
				<textFieldExpression><![CDATA[$V{Variable_2float}.intValue()]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement mode="Opaque" x="0" y="150" width="316" height="30" backcolor="#FF66CC" uuid="cae71c8f-0a21-4f15-90d3-920b96bb34f0"/>
				<textFieldExpression><![CDATA[$V{Variable_1}.contains( ($V{Variable_2float}.intValue()))]]></textFieldExpression>
			</textField>
		</band>
	</detail>
</jasperReport>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *