2

ユーザーが 2 つの複数選択オプション プロンプトを希望するレポート要件があります。

  • シナリオ A. ユーザーが両方のプロンプトで値を選択した場合、両方のプロンプトで選択された値でリストをフィルタリングする必要があります。
  • シナリオ B. ユーザーがプロンプト 1 で値を選択し、プロンプト 2 で値を選択しない場合 - プロンプト 1 で選択された値のみでリストをフィルタリングする必要があります。
  • シナリオ C. ユーザーがプロンプト 2 で値を選択し、プロンプト 1 で値を選択しない場合 - リストはプロンプト 2 で選択された値のみでフィルタリングする必要があります。

どちらのプロンプトもオプションであるため、フィルターはオプションのままです。

両方のプロンプト値が選択されている場合、レポートはシナリオ A で正常に機能します。

ただし、シナリオ B では、レポートはプロンプト 1 から選択された値を表示します (これは正しいです) が、プロンプト 2 からのすべての値は表示されます (これは正しくありません。選択されていない値は表示されません)。

シナリオ C では、レポートにはプロンプト 2 から選択された値が表示されますが (これは正しい)、プロンプト 1 からのすべての値が表示されます (これは正しくありません。選択されていない値は表示されません)。

上記のシナリオに従ってレポートがフィルター処理されるようにするための解決策を提供していただけますか?

4

1 に答える 1

1

デフォルトでは、プロンプトで回答が提供されない場合、Cognos はフィルタを適用しません。結果はすべての値です。したがって、得られた結果は、Cognos で期待される動作です。

私の提案は、複数のリストと条件付き文字列変数を使用することです。したがって、最初に次の式で条件変数を定義します。

case 
when (ParamDisplayValue('Prompt 1') is not null and ParamDisplayValue('Prompt 2') is not null) then ('A')
when (ParamDisplayValue('Prompt 1') is not null and ParamDisplayValue('Prompt 2') is null) then ('B')
when (ParamDisplayValue('Prompt 1') is null and ParamDisplayValue('Prompt 2') is not null) then ('C')
end

もちろん、A、B、C の 3 つの 3 つの文字列結果を定義する必要があります。

リスト: 3 つのリストを作成します。

リスト A - プロンプト 1、プロンプト 2 の値をパラメーターとして使用するフィルターの定義

リスト B - プロンプト 1 をパラメーターとして使用するフィルターを定義し、プロンプト 2 のすべての値を除外する定数フィルターを定義します。

リスト C - プロンプト 2 をパラメーターとして使用するフィルターを定義し、プロンプト 1 のすべての値を除外する定数フィルターを定義します。

各リストを選択し、一致した各リストで render 変数を使用します。

ListA - 条件変数文字列が A に等しい場合にのみレンダリングします。

ListB - 条件変数文字列が B と等しい場合にのみレンダリングします。

ListC - 条件変数文字列が C と等しい場合にのみレンダリングします。

問題の解決に役立つことを願っています。

于 2012-09-03T19:00:32.863 に答える