Giả sử tôi muốn một JasperReport cho phép người dùng lọc vào một ngày nếu họ muốn. SQL như sau:.Điều kiện Các điều khoản trong JasperReports
select * from foo where bar = $P{bar} and some_date > $P{some.date}
Bây giờ, tôi không muốn lọc theo một số ngày nếu họ không vượt qua ngày trong tôi thấy kludge sau mà mọi người sử dụng:
select * from foo where bar = $P{bar} $P!{some.date.fragment}
Và tham số some.date.fragment
được định nghĩa với mặc định sau:
($P{some.date} == null || $P{some.date}.equals("")) ? "" : "AND some_date >'" + new java.sql.Date($P{some.date}.getTime()).toString() + "'"
này không hoạt động như toString
không ra ngày trong một định dạng mà máy chủ SQL của tôi hiểu được. Tôi muốn có điều kiện vẫn còn sử dụng một tuyên bố chuẩn bị với trình điều khiển jdbc và quăng tham số trong, tôi chỉ muốn tuyên bố chuẩn bị được phụ thuộc vào nếu tham số là null hay không. Điều này có thể được thực hiện?
Trong trường hợp của tôi tham số thứ hai là một chuỗi và một phần của mệnh đề where tôi đã sử dụng $ P {stringValue}. –