アプリケーションのクエリを作成しようとしていますが、問題が発生しています。次のように、データベースの1つのフィールドをパラメーターとして渡す必要があります。
SELECT name, phone, email
FROM company
WHERE $P{clause} = $P{key}
ORDER BY $P{order}
WHERE句とORDERBY句は、ユーザーが選択できるように動的であるためです。
それを使用$P{}
しても機能しませんでした。
アプリケーションのクエリを作成しようとしていますが、問題が発生しています。次のように、データベースの1つのフィールドをパラメーターとして渡す必要があります。
SELECT name, phone, email
FROM company
WHERE $P{clause} = $P{key}
ORDER BY $P{order}
WHERE句とORDERBY句は、ユーザーが選択できるように動的であるためです。
それを使用$P{}
しても機能しませんでした。
JasperReportsのパラメータ参照には2つの構文式があります:$P{}
と$P!{}
。
標本、見本:
| パラメータ名| パラメータタイプ| パラメータ値| |:--------------- | ------------------- |:----------- ----:| | eventName | java.lang.String | オリンピック| | eventType | java.lang.Integer | 2 |
元の式(置き換える):
SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}
結果は次のようになります。
SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2
標本、見本:
| パラメータ名| パラメータタイプ| パラメータ値| |:--------------- | ------------------:|:----------- ----:| | tableName | java.lang.String | イベント| | eventName | java.lang.String | オリンピック| | チャンネル| java.lang.String | 'BBC' | | タイプ| java.lang.String | スポーツ|
元の式(置き換える):
SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}' AND channel=$P!{channel} AND type=$P!{type}
結果は次のようになります。
SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND channel='BBC' AND type=sport
詳細については、「レポートパラメータの使用」の投稿を読んで、このクエリサンプルを参照してください。
あなたの場合、正しい表現は次のようになります。
SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}
ここで、$P{key}はjava.lang.Stringパラメーターです。
またはこのように( $ P!{clause}の値に依存します)
SELECT name, phone, email FROM company WHERE $P!{clause} = $P!{key} ORDER BY $P!{order}
ここで、$P{key}はjava.lang.Stringパラメーターです。
パラメータで注文する必要がある場合は、次のことを試してください。
SELECT name, phone, email ,(case when $P{order} = 'name' then name when $P{order} = 'phone' then phone else email end) as orderlist
FROM company
WHERE $P{clause} = $P{key}
ORDER BY orderlist