Maison >base de données >tutoriel mysql >Comment transmettre des paramètres aux clauses WHERE et ORDER BY dans les requêtes JasperReports ?

Comment transmettre des paramètres aux clauses WHERE et ORDER BY dans les requêtes JasperReports ?

DDD
DDDoriginal
2025-01-18 06:37:09680parcourir

How to Pass Parameters to WHERE and ORDER BY Clauses in JasperReports Queries?

Lors de la création de requêtes dans JasperReports, vous devrez peut-être transmettre des paramètres dynamiques de l'utilisateur. A cet effet, il existe deux expressions syntaxiques pour les références de paramètres : $P{} et $P!{}.

$P{}Grammaire

La syntaxe

$P{} est principalement utilisée pour définir les valeurs des paramètres d'entrée dans la clause WHERE. Il utilise un algorithme de remplacement « intelligent » similaire à java.sql.PreparedStatement. Par exemple, les paramètres java.lang.String seront remplacés par des valeurs entre guillemets et les paramètres java.lang.Integer seront remplacés par des valeurs numériques.

Par exemple, considérons les paramètres suivants :

参数名称 参数类型 参数值
eventName java.lang.String Olympic Games
eventType java.lang.Integer 2

Expression originale (à remplacer) :

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name=$P{eventName} AND type=$P{eventType}</code>

Le résultat sera :

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name='Olympic Games' AND type=2</code>

$P!{}Grammaire

La syntaxe

$P!{} est principalement utilisée pour les substitutions simples. Il remplace textuellement les valeurs des paramètres, sans aucun traitement particulier.

Par exemple, considérons les paramètres suivants :

参数名称 参数类型 参数值
tableName java.lang.String events
eventName java.lang.String Olympic Games

Expression originale (à remplacer) :

<code class="language-sql">SELECT startDate, endDate, rating
FROM $P!{tableName}
WHERE name='$P!{eventName}'</code>

Le résultat sera :

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name='Olympic Games'</code>

Utilisation dans votre cas

Selon votre question, vous devez définir dynamiquement les clauses WHERE et ORDER BY, vous pouvez utiliser l'expression suivante :

<code class="language-sql">SELECT name, phone, email
FROM company
WHERE $P!{clause} = $P{key}
ORDER BY $P!{order}</code>

$P{key} est un paramètre java.lang.String. Si la valeur $P!{clause} nécessite une valeur entre guillemets, vous pouvez utiliser l'expression suivante à la place :

<code class="language-sql">SELECT name, phone, email
FROM company
WHERE $P!{clause} = '$P!{key}'
ORDER BY $P!{order}</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn