ホームページ > データベース > mysql チュートリアル > 変数パラメータリストをJasperReportsのSQL「IN」述語に渡す方法は?

変数パラメータリストをJasperReportsのSQL「IN」述語に渡す方法は?

Susan Sarandon
リリース: 2024-12-22 17:46:14
オリジナル
883 人が閲覧しました

How to Pass a Variable Parameter List to JasperReports' SQL

SQL "IN" 述語を使用して JasperReports に変数パラメータ リストを渡す

JasperReports と SQL "IN" 述語を使用する場合、パラメーター リストをクエリに動的に渡すために必要です。この記事では、Java プログラムで整数値のリストを含むパラメーターの値を設定する方法を説明します。

以下の SQL クエリには、1 つ以上の整数値を含むパラメーター リスト "roles" が必要です。

SELECT customer_name AS NAME, 
       id_customer   AS ID 
  FROM customer 
 WHERE customer_role IN ($P{roles})
ログイン後にコピー

Java で「roles」パラメータの値を動的に設定するには、次のように提供される「$X」変数を使用します。 JasperReports:

// Assume the "roles" parameter is a list of integers
List<Integer> roles = ...;

// Convert the list to a comma-separated string
String roleString = roles.stream().map(String::valueOf).collect(Collectors.joining(","));

// Set the parameter value using the "$X" variable
parameters.put("roles", "$X{IN,customer-role," + roleString + "}");
ログイン後にコピー

「$X{IN,column-name,parameter-name}」構文を使用すると、比較する列、パラメータ名、値のリストを指定できます。

たとえば、次のクエリでは、「roles」パラメータを使用して、という列をフィルタリングします。 "customer_role":

SELECT * 
  FROM customer 
 WHERE $X{IN,customer_role,roles}
ログイン後にコピー

このソリューションにより、動的パラメータ リストを JasperReports の SQL "IN" 述語に渡すことができ、指定された値に基づいてクエリがデータを正しくフィルタリングできるようになります。

以上が変数パラメータリストをJasperReportsのSQL「IN」述語に渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート