0

私は Birt の初心者で、「複数のダイナミック レンジ パラメータ」を受け入れるレポートを開発したいと考えています。ここでは、問題をよりよく説明する例を示します。

   データセット:   テーブル: 顧客   : idCustomer、名前

ユーザーがidCustomerの複数の範囲を挿入して名前を取得できるようにしたいと思います。
例: ユーザーは、ID が 205 から 300 の間、ID が 501 から 670 の間、ID が 800 から 920 の間の顧客を必要とする場合があります...

私は通常、入力パラメーターに「複数値を許可」と「範囲値を許可」を設定するBO Crystal Reportで同じことを行います。Birt に似たようなものはありますか?

ここに画像をアップロードします: http://i.stack.imgur.com/uvz7F.jpg .これは、「複数値を許可」と「範囲値を許可」を使用した入力パラメーターの BO スクリーンショットです。
ありがとう
    GG

4

1 に答える 1

1

短い答え:いいえ。

より長い答え: BIRT には、単一のパラメーターが値の範囲を取ることを可能にするオプションがありません。

単一のパラメーターが複数の値を取ることを許可するオプションがありますが、ListBox パラメーターのみです。また、単一のレポート パラメーター値のみを特定のデータセット パラメーターにバインドできます。つまり、データセット クエリ内で複数のパラメーター値を選択することはできません (リレーショナル データソースを使用している場合)。代わりに、[データセットの編集] ダイアログの [フィルター] タブで、パラメーター値に基づいてデータセットにフィルターを追加する必要があります。(そして、これは、複数の値の範囲ではなく、パラメーターの複数の個別の値を指定することのみを許可します。)

(または、レポート パラメーターをデータセット パラメーターにバインドする代わりに、パラメーターの複数の値をデータセットのクエリ テキストに直接挿入する、データセットの beforeOpen イベント スクリプトを作成することもできます。ただし、これにより、レポートが次のリスクにさらされます。 SQL インジェクション攻撃. または、BIRT にプラグインを追加して、複数のパラメーター値をバインドすることもできます。)

したがって、オプションは次のとおりです。

  1. 複数の値を有効にして単一の ListBox パラメーターを設定し、ユーザーが必要な個々の値をすべて選択して、パラメーター値に基づいてデータセットをフィルター処理できるようにします (または、beforeOpen イベント スクリプトまたは BIRT プラグインを使用します)。
  2. 2 つのパラメーター (範囲の開始と終了) を設定して、ユーザーが選択する単一の値の範囲を指定できるようにし、レポート パラメーターをクエリ内の同等のデータセット パラメーターのペアにバインドします。
  3. n個のパラメーターのペアをセットアップして、ユーザーが選択する値の範囲をn 個まで指定できるようにし (たとえば、ユーザーが値の範囲を最大 5 個指定できるようにするには、10 個のパラメーターをセットアップします)、レポート パラメーターを同等のパラメーターにバインドします。クエリのデータセット パラメータ。
  4. 単一のテキストボックス パラメータを設定して、ユーザーが範囲を自由形式で入力できるようにします (例: の形式[205..300],[501..607])。次に、データセットの beforeOpen イベント スクリプトを記述して、必要な範囲の入力されたパラメータ値を解析し、それに応じてクエリ テキストを修正します。

最後のオプションは、非常に多くの作業が必要であり、有効な値を指定するオプションが削除され、レポートがSQL インジェクション攻撃のリスクにさらされるため、強く推奨されていないことに注意してください。

于 2012-11-15T19:59:59.180 に答える