2017-07-17 25 views
0

私はかなりカスケードしないが、関連性のある値のプロンプトがいくつかあります。値プロンプトから利用可能なオプションに関するCognosレポートスタジオフィルタ

  • プロンプト1:例として、マネージャー
  • プロンプト2:スーパーバイザシフト
  • プロンプト3:あなたは、プロンプト1でジムを選択した場合、プロンプト2は、によって移入されますので

従業員ジムが担当している監督者だけをシフトするなど、価値のあるプロンプトのラインを下にしています。実際のレポートでは、本当に重要なプロンプトは従業員の最終的なプロンプトだけで、残りは関連する従業員のリストをフィルタリングするだけです。

私が遭遇している問題は、範囲が狭くなることによってすべてのプロンプトがオプションであり、それが見ているクエリが実際には最終的なプロンプト値だけを見ているということです。最後のものが記入されていないが、シフトマネージャーと言えば、私が選んだシフト監督者の下にある従業員のみをレポートにすることはできますか?

  • ジム
    • テリー
      • デイブ
      • ビル
    • ジョン :階層ツリーはこのように見える場合

      は、それを別の方法を言うために、私は私のレポートがあり、当直長としてマネージャとしてジム、とテリーを選択した場合、各レベルは、異なる値のプロンプトを表し

      • アマンダ
      • ジョエル

現在Dave、Bill、Amanda、Joelの結果が表示されていますが、私はDaveとBillを見たいだけです。

プロンプトの値を適切にフィルタリングしているので、明示的に選択されていない場合、最終的なプロンプトで利用可能なオプションを表示するにはどうすればよいですか?

答えて

1

これは一般に、すべてのプロンプトに静的な値を追加することで実現します。最後のプロンプトで「すべて」を選択した場合、これを認識するためにwhere句にロジックを追加します。例:

残っているものはすべて、プロンプトを必要に応じてオプションにするために、プロンプトマクロなどを使っています。

([ManagerID] = '050' OR ?pManagerID?='All') 
AND 
([SupervisorID] = '012' OR ?SupervisorID?='All') 
AND 
([EmployeeID] = 'All' OR ?EmployeeID?='All') 

簡体この手段::だから

([ManagerID] = '050') 
AND 
([SupervisorID] = '012') 

たとえば、あなたが特定のマネージャーを選ぶ場合は、特定のスーパーバイザーが、その後、従業員プロンプトで「すべて」を選ぶ、これが結果ですすべての従業員を選ぶわけではありません。選択したManagerIDとSupervisorIDのレコードのみを選択します。

+0

問題は、すべての従業員、つまりフィルタを適用したプロンプトに表示される従業員だけを取得したくないということです。 「すべて」オプションを使用すると、データベース内のすべての従業員が既にフィルタリングされている2つだけでなく取得されます。 –

+0

試しましたか?私は詳細な説明を追加します –

+0

2人が同じものを提案したので、おそらく試してみるべきです –

0

ORを使用してソリューションを構築する方法を利用できます。 OR論理構造がtrueを返すために必要な句は1つだけなので、この動作を使用して特定のものから一般的なものをテストし、適切なレベルで停止することができます。

従業員が選択されている場合、ORの最初の句が使用され、特定の従業員がフィルタされます。

従業員が選択されていないがスーパーバイザがある場合、最初の句はfalseを返し、2番目の句が使用されます。

従業員もスーパーバイザも選択されていないがマネージャーが選択されていない場合、最初と2番目の句はfalseを返し、最後の句が使用されます。

+0

これはメインクエリのフィルタとして使用されていますか? –

+0

はい。これはメインクエリの1つのフィルタになります。フィルタ自体を「オプション」としてマークすることができます。 – Johnsonium

+0

私はこれを試しましたが、私が期待していた以上の結果を得ていました。 –

関連する問題