1

現在、SSRS 2012 で作成しているレポートに苦労しています。4 レベルの階層を持つデータセットがあり、再帰的な階層を作成したいと考えています。どこを見ても、この階層を 1 つの列に作成し、パディングを使用して異なるレベルを区別する方法を見つけています。ただし、私のレポートは Excel にエクスポートされ、列の値でフィルター処理する機会があります。つまり、階層内の各レベルを異なる列に分割する必要があります。

私は場所を扱っているので、1 つの Location_ID と Parent_Location_ID があります。

最後に、レポートの階層を以下のようにしたいと思います。

xxxx
  xxxx
    xxxx
      xxxx
      xxxx
      xxxx
    xxxx
      xxxx
  xxxx
    xxxx
      xxxx
      xxxx
4

2 に答える 2

0

このテクニカル ネット リファレンスは、単一の列で SSRS の再帰関係を解決しようとしている他の人に役立つ場合があります。私の場合、複数の列を見始めましたが、単一の列がうまく機能しました。

再帰的な階層グループを作成するには:

  1. デザイン ビューでテーブルを追加し、データセット フィールドをドラッグして表示します。通常、階層として表示するフィールドは最初の列にあります。
  2. テーブル内の任意の場所を右クリックして選択します。グループ化ペインには、選択したテーブルの詳細グループが表示されます。[行グループ] ウィンドウで、[詳細] を右クリックし、[グループの編集] をクリックします。[グループ プロパティ] ダイアログ ボックスが開きます。
  3. [グループ式] で、[追加] をクリックします。グリッドに新しい行が表示されます。
  4. [グループ化対象] リストで、グループ化するフィールドを入力または選択します。
  5. [詳細] をクリックします。
  6. [再帰的な親] リストで、グループ化するフィールドを入力または選択します。
  7. [OK] をクリックします。
  8. レポートを実行します。

インデントを追加して階層レベルを表示します。次を使用して、テキスト ボックスの左にパディングを追加できます。

=CStr(2 + (Level()*10)) + "pt"
于 2013-10-29T23:08:46.760 に答える
0

レポートを設計する場合、階層で処理するレベルの最大数を決定します。たとえば、10 とします。

次に、発生した最大値を返すクエリを作成し、そのクエリの結果を使用して未使用の列を非表示にします。

私のコア データ クエリは、列の固定セットを持ちます。

Level1  Level2 Level3 .... Level10 MyDataField1 MyDataField2

そして、これらを SQL クエリで生成します。面倒で反復的な SQL (DRY ではない) になりますが、SSRS とエクスポート側での処理は簡単です。

于 2012-10-15T13:55:59.447 に答える