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):
SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}
Hasilnya ialah:
SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2
$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):
SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}'
Hasilnya ialah:
SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games'
Mengikut soalan anda, anda perlu menetapkan WHERE dan ORDER BY klausa secara dinamik, anda boleh menggunakan ungkapan berikut:
SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}
di mana $P{key}
ialah parameter java.lang.String
. Jika nilai $P!{clause}
memerlukan nilai yang disebut, anda boleh menggunakan ungkapan berikut sebagai ganti:
SELECT name, phone, email FROM company WHERE $P!{clause} = '$P!{key}' ORDER BY $P!{order}
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!