Expression Variable: Compter tous les enregistrements pour lesquels la condition >0 est satisfaite
J'ai créé une variable pour maintenir un décompte de tous les machinery_part_id dans un emplacement pour mon rapport. Cela fonctionne très bien, maintenant, je veux ajouter un filtre dont le machinery_part_id est comptabilisé uniquement si elles ont une quantité > 0.
C'est ce que j'ai dû commencer avec:
Nom de la Variable: PART_COUNT
Variable De Type Classe: Java.lang.Entier
Type De Calcul: Nombre
Le Type De Réinitialisation: Groupe
De réinitialisation de Groupe: LOCATION_ID
Type D'Incrément: Aucun
Expression d'une Variable: $F{MACHINERY_PART_ID}
Un champ dans mon rapport a été établi comme suit:
Champ De Texte De L'Expression De La Classe: Java.lang.Entier
Temps D'Évaluation: Groupe
Groupe d'évaluation: LOCATION_ID
Champ de texte de l'Expression: $V{PART_COUNT}
La nouvelle condition est de compter(machinery_part_id) groupe par location_id avoir la quantité >0
$F{MACHINERY_PART_ID}
et $F{QUANTITY_SENT}
sont à la fois java.lang.double
champs, j'ai essayé d'entrer les données suivantes dans l'Expression d'une Variable:
New Double($F{QUANTITY_SENT} > 0.00 ? $F{QUANTITY_SENT}.doubleValue() : 0d)
Mais il des erreurs avec:
Syntax error, insert ";" to complete BlockStatements
Je suis en utilisant iReport 3.0.0
S'il vous plaît aider,
Merci!
- Peut-être que je suis l'interprétation de cette façon incorrecte, mais il semble que votre variable et de champ sont des entiers, et que votre variable de l'expression "Nouveau Double($F{QUANTITY_SENT...) est à la recherche pour créer un double? Et est votre expression dans la langue définie pour le Java ou Groovy?
- Le langage d'Expression est de Java.
- J'ai essayé de changer la Variable de l'Expression: '($F{QUANTITY_SENT} > 0.00 ? $F{QUANTITY_SENT} : 0d) "et il erreurs par de" L'opérateur > n'est pas défini pour le type d'argument(s) Double, double
- Je suis passé de la Variable de Type de Classe et le Champ de Texte de l'Expression de la Classe java.lang.double et essayé
New Double($F{QUANTITY_SENT}.doubleValue() > 0.00 ? $F{QUANTITY_SENT}.doubleValue() : 0d)
Elle ne fait pas d'erreur, mais plus ses en excluant seulement les enregistrements où $F{QUANTITY_SENT} est nulle. Enregistrements avec $F{QUANTITY_SENT}=0.00 sont encore comptés.
Vous devez vous connecter pour publier un commentaire.
J'ai tout compris:
VARIABLE
Nom de la Variable: PART_COUNT
Variable De Type Classe: Java.lang.Double
Type De Calcul: Somme
Le Type De Réinitialisation: Groupe
De réinitialisation de Groupe: LOCATION_ID
Type D'Incrément: Aucun
Expression Variable:
new Double($F{QUANTITY_SENT}.doubleValue() > 0.00 ? 1.0:0.0)
CHAMP DE TEXTE
Champ De Texte De L'Expression De La Classe: Java.lang.Double
Temps D'Évaluation: Groupe
Groupe d'évaluation: LOCATION_ID
Champ de texte de l'Expression: $V{PART_COUNT}
QUESTION
Comment puis-je maintenant, passez cette expression pour renvoyer un nombre entier??
Merci de me pointer dans la bonne direction.
J'ai tout compris:
CHAMP DE TEXTE
Champ De Texte De L'Expression De La Classe: Java.lang.Entier
Temps D'Évaluation: Rapport
Champ De Texte De L'Expression:
new Integer($V{PART_COUNT}.intValue())
Trouvé de réponse ici:
http://community.jaspersoft.com/questions/525053/cannot-cast-int-integer