Apabila membina pertanyaan dalam JasperReports, anda mungkin perlu menghantar parameter dinamik daripada pengguna. Untuk tujuan ini, terdapat dua ungkapan sintaks untuk rujukan parameter: $P{}
dan $P!{}
.
$P{}
Tatabahasa$P{}
digunakan terutamanya untuk menetapkan nilai parameter input dalam klausa WHERE. Ia menggunakan algoritma penggantian "pintar" serupa dengan java.sql.PreparedStatement
. Contohnya, parameter java.lang.String
akan digantikan dengan nilai yang disebut dan parameter java.lang.Integer
akan digantikan dengan nilai angka.
Sebagai contoh, pertimbangkan parameter berikut:
参数名称 | 参数类型 | 参数值 |
---|---|---|
eventName | java.lang.String | Olympic Games |
eventType | java.lang.Integer | 2 |
Ungkapan asal (untuk diganti):
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}</code>
Hasilnya ialah:
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2</code>
$P!{}
Tatabahasa$P!{}
digunakan terutamanya untuk penggantian mudah. Ia menggantikan nilai parameter secara verbatim, tanpa sebarang rawatan khas.
Sebagai contoh, pertimbangkan parameter berikut:
参数名称 | 参数类型 | 参数值 |
---|---|---|
tableName | java.lang.String | events |
eventName | java.lang.String | Olympic Games |
Ungkapan asal (untuk diganti):
<code class="language-sql">SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}'</code>
Hasilnya ialah:
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games'</code>
Mengikut soalan anda, anda perlu menetapkan WHERE dan ORDER BY klausa secara dinamik, anda boleh menggunakan ungkapan berikut:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
di mana $P{key}
ialah parameter java.lang.String
. Jika nilai $P!{clause}
memerlukan nilai yang disebut, anda boleh menggunakan ungkapan berikut sebagai ganti:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = '$P!{key}' ORDER BY $P!{order}</code>
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Parameter ke WHERE dan ORDER BY Klausa dalam Pertanyaan JasperReports?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!