web-dev-qa-db-fra.com

Comment éviter les valeurs nulles dans les rapports jasper

J'ai un champ dans mon rapport jasper qui a une valeur d'expression comme

$F{address_street1}+" "+$F{address_street2}+ " " +$F{address_state} + " "+$F{address_country}+ " "+$F{address_Zip}

Mon problème est que si l'un des champs ici est nul, j'obtiens la valeur nulle entre autres choses comme

101 Main St****null****ILUnited States12345 

Notez le null en surbrillance. Y a-t-il un moyen d'éviter cela?

J'ai essayé de vérifier la valeur null d'un champ particulier en utilisant l'expression booléenne et de le remplacer par un blanc, mais cela ne semble pas fonctionner.

25
Sachin Anand

Définissez la propriété isBlankWhenNull sur true.

  • Dans iReport, cochez la case Blank When Null lorsque votre champ est sélectionné.
  • Dans le fichier jasx jrxml: <textField isBlankWhenNull="true">
40
krock

Dans l'expression, vous êtes autorisé à utiliser le code Java. 

Donc, ce que vous devez faire est de vérifier que la valeur du champ est null si elle est ensuite remplacée par une chaîne vide.

$F{address_street1} == null ? "" : $F{address_street1}+ " " +
$F{address_street2} == null ? "" : $F{address_street2}+ " " +
$F{address_state} == null ? "" : $F{address_state}  + " " +
$F{address_country} == null ? "" : $F{address_country}+ " " +
$F{address_Zip} == null ? "" : $F{address_Zip}

@Vash, oui c'est ce que je ferais sauf que je pense que vous voudrez peut-être mettre chaque expression entre parenthèses afin que chaque expression soit indépendante des autres. Comme ça:

($F{address_street1} == null ? "" : $F{address_street1}+ " ") +
($F{address_street2} == null ? "" : $F{address_street2}+ " ") +
($F{address_state} == null ? "" : $F{address_state}  + " ") +
($F{address_country} == null ? "" : $F{address_country}+ " ") +
($F{address_Zip} == null ? "" : $F{address_Zip})
8
rogiller

si vous pouvez utiliser jasperreports-functions et que vous voulez afficher une valeur de chaîne, vous pouvez le faire avec la fonction T() qui renvoie le texte String ou la chaîne vide.

T($F{firstName})

5
panser
($F{address_street1}.equals(null) ? "" : $F{address_street1}+ " ") + 
($F{address_street2}.equals(null)l ? "" : $F{address_street2}+ " ") +
($F{address_state}.equals(null) ? "" : $F{address_state}  + " ") +            
($F{address_country}.equals(null) ? "" : $F{address_country}+ " ") +           
($F{address_Zip} .equals(null) ? "" : $F{address_Zip})
2
Suresh Swami

J'ai l'option (vide quand Null) vérifiée pour chaque champ du rapport et voir toujours les nulls. J'ai donc utilisé des expressions de rapport.

Puisque chaque variable de rapport est une chaîne, pour vérifier l’utilisation nulle:

$F{address_stree2}.equals("null") 
1
Padma Kannan

Vous pouvez définir la hauteur du champ de texte sur 1, Définir l'indicateur Étirer avec dépassement sur true et sur Vierge lorsque NULL est défini sur true. Ainsi, lorsque la valeur du champ est vide, elle ne laissera pas d'espace vide.

0
Vinita Shah

Essayez de suivre:

$F{address_street1}.toString() == null ? "" : $F{address_street1}+ " " +
$F{address_street2}.toString() == null ? "" : $F{address_street2}+ " " +
$F{address_state}.toString() == null ? "" : $F{address_state}  + " " +
$F{address_country}.toString() == null ? "" : $F{address_country}+ " " +
$F{address_Zip}.toString() == null ? "" : $F{address_Zip}

Or Définir la propriété des rapports: Type de ressource manquant: Type vide

les deux fonctionnent dans mon cas.

0
YOGESH C UGALE

Si vous travaillez dans ecliple + jasper softReports, vous passez sous les étapes1.sélectionnez un champ + clic droit et sélectionnezshowPropertiesoption2.click TextField sélectionnez 3.Compile et Rebuild vérifie-le.

0
Raja

Vous pouvez écrire un code Java

 package com.xyz

 Class ReportUtil 
  {
      public static String getMyString (String str1 , String str2)
         {
             if((str1!=null) && (str2!=null))
                 return str1 + " " + str2 ;
             else if str1==null
                  return str2 ; 
             return str1 ;                            
          }

   }

En JRXML, vous pouvez utiliser l'expression suivante dans la zone de texte.

com.xyx.ReportUtil.getMyString ($F{firstName},$F{lastName}) 

Définissez la propriété "Est vide quand null" sur true 

Cordialement,

Ankush 

0
Ankush Chhabra

si vos champs sont des chaînes, cochez simplement la propriété sur (BLANK WHEN NULL). Sinon, utilisez l'opérateur ternaire 

si null, imprimer quelque chose d'autre, imprimer le champ.

field==null?whatever:field 
field=null?false:true

Ces deux devraient résoudre le problème.

0
Majid Ali Khan

j'ai un cas similaire que je veux éviter de montrer null dans la sortie si j'ai un paramètre null
J'utilise T($P{city}) dans l'éditeur d'expression, il est évalué à empty string si vous ne lui avez pas passé de paramètre 

T() retourne la chaîne de texte si la valeur est une chaîne, sinon un .__ vide. la chaîne est retournée

exemple d'utilisation:  

$P{name} + " " + (T($P{city}).isEmpty() ? "" : " from " )+ (T($P{city}).isEmpty() ? "" : "\"" +  T($P{city}) + "\"")

si je passe le paramètre à $ P {ville} 
le résultat est :

abdulkahliq de "Riyad"

si je ne passe pas le paramètre à $ P {ville}, le résultat est: 

abdulkahliq

Merci et salutations,

0