ユーザーが(Ctrlキーを押しながら)複数の値を選択してレポートを表示できるMultiSelect List Box(Dynamic one)を使用することになっていました。
そのため、実装中にBeforeOpenメソッドで param 値を取得して DataSet に渡し、IN 演算子を使用して where 句に追加しようとしました。画面に SQL エラーが表示されました。したがって、param値を出力すると、 [Ljava.lang.Object;@26ba26ba]のようなもので、クエリでエラーが発生しました。スクリプトでその複数選択パラメータ値を処理してクエリに渡すことはできないと思いました。だからそのアイデアを落とした。
今、私はData set で BIRT の組み込みフィルター機能を使用しています。Beforeopen Methodでスクリプトを使用して SQL で行っていたことは、データセット Filter で同じことを行っています。row["dataColumn"]IN param["param"].valueを使用しましたが、正常に動作しています。フィルター画面から 1 つまたは複数の値を選択し、レポートを実行して適切な結果を得ることができます。
ここでもう 1 つ実装する必要があるのは、フィルター リスト ボックスに [すべて選択] が必要です。これにより、ユーザーは他の値を選択する代わりに、[すべて選択] を選択してすべてのデータのレポートを表示できるようになります。Select All に対して'%'を渡しています。IN 演算子を使用しているため、レポートでデータを取得できません。
複数選択とともにすべて選択機能を提供したいのですが、上記の制限のためにそれを行うことができません。別の方法として、Ctrl+A を使用してすべてを選択することもできますが、それも機能していますが、これは実装する必要がある要件によるものです。
BIRT version="3.2.17"を使用しています
どんなアイデアでも歓迎されます..事前に感謝します..:)