none
SSRS 2008 R2: Hilfe bei Gruppierung von Positionsdaten (Child Group & Adjacent) RRS feed

  • Frage

  • Hallo,

    eine Stored Procedure liefert folgendes Ergebnis:

    Kunde ID | Name | VK Datum |Position | Artikel

    1 | Mustermann | 01.01.2012 |Text A | 1 | Dreirad
    1 | Mustermann | 01.01.2012 | Text A |2 | Auto
    1 | Mustermann | 01.01.2012 | Text A |3 | Roller
    2 | Musterfrau | 03.01.2012 | Text B |1 | E-Bike 2 | Musterfrau | 03.01.2012 | Text B |2 | Fahrrad
    2 | Musterfrau | 03.01.2012 | Text B |3 | Roller

    … und weitere 500 Datensätze.

    Im Report sollen die Daten Kunde ID, Name und VK-Datum als Kopf und die Detaildaten als Positionen angezeigt werden, also

    1 | Mustermann | 01.01.2012
     Text A
      1 | Dreirad
      2 | Auto
      3 | Roller

    2 | Musterfrau | 03.01.2012
     Text A
      1 | E-Bike
      2 | Fahrrad
      3 | Roller

    Wer kann mir einen Tipp geben, wie ich mit Gruppen meine Anforderung lösen kann? Mit den Gruppen habe ich schon rumgespielt aber ich schaffe es nicht, die Positionsdaten untereinander anzeigen zu lassen – es erscheint immer nur die erste Position.
    Mit der „Parent-Group“ habe ich schon herumgespielt, eine „Child Group“ hinzugefügt, mit dem „Adjacent“ getestet, alles ohne Erfolg.

    Prinzipiell müsste die Sache doch recht einfach sein. Gruppe für die Kopfdaten (Mustermann, Musterfrau) hinzufügen und der Tablix irgendwie beibringen, dass sich die Positionen wiederholen sollen. Aber ich komme nicht drauf, wie ich meine Anforderung lösen kann.

    Hilfe ;-)

    Donnerstag, 13. September 2012 12:10

Antworten

  • Hallo! Ich habe mir mal die Daten in folgendem Skript aufbereitet:

    Declare @mytab as Table(Kunde_ID int, Name varchar(20), VK_Datum date,
    Infotext varchar(20), Position int, Artikel varchar(20));
    
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 1 , 'Dreirad');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 2 , 'Auto            ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 3 , 'Roller ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 1 , 'E-Bike ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 2 , 'Fahrrad');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 3 , 'Roller ');
    
    Select Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel
    from @mytab;

    Dann habe ich eine Tabelle in den Report eingefügt und dort die Felder Position und Artikel aufgenommen.
    Dann habe ich eine übergeordnete Gruppe (mit Gruppenkopf) nach Infotext erstellt und dort den Infotext angezeigt.
    Dann habe ich eine übergeordnete Gruppe nach Kunde_ID (mit Gruppenkopf) erstellt und diese Zeilengruppe dann mit VK_Datum erweitert. Rechts neben der Spalte mit Kund_ID habe ich noch zwei leere Spalten eingefügt. In dieser Zeile werden (von links) die Spalten Kunde_ID, Name, VK_Datum angezeigt.

    Alternativ habe ich das ganze nochmal so aufgezogen, dass ich die links eingefügten Spalten wieder gelöscht habe und alle Daten übereinander eingefügt habe.
    Die Tabelle hat dann also drei Spalten, in der obersten Gruppe steht Kunde_ID (Spalte 1), daneben Name (Spalte 2), VK_Datum (Spalte 3).
    In der  zweiten Gruppe ist die erste Spalte leer und Infotext zieht sich über Spalte 2 und 3.
    In der Detail-Zeile ist die erste Spalte leer und dann kommen Position (Spalte 2) und Artikel (Spalte 3).

    HTH!

    Kommen bei Deiner Prozedur wirklich alle Zeilen zurück?

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Montag, 17. September 2012 11:39

Alle Antworten

  • Kann es sein, dass anstelle der Feldnamen etwas wie First(<Feldname>) in der Tablix steht?

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Freitag, 14. September 2012 08:20
  • Hallo Christoph,

    vielen Dank für deine Antwort.

    Die Feldnamen sind die normalen Feldnamen, die man bei einer hinterlegten StoredProcedure auswählen kann. In der Expression sind somit auch keine Einstellungen hinterlegt.

    Darf ich dich fragen, wie du mein Anliegen lösen würdest? Könntest du mir stichpunktartig schreiben, welche Gruppierung du wie verwenden würdest?

    Viele Grüße

    Freitag, 14. September 2012 16:02
  • Hallo! Ich habe mir mal die Daten in folgendem Skript aufbereitet:

    Declare @mytab as Table(Kunde_ID int, Name varchar(20), VK_Datum date,
    Infotext varchar(20), Position int, Artikel varchar(20));
    
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 1 , 'Dreirad');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 2 , 'Auto            ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (1 , 'Mustermann' , '2012-01-01' , 'Text A' , 3 , 'Roller ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 1 , 'E-Bike ');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 2 , 'Fahrrad');
    Insert into @mytab(Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel)
    values (2 , 'Musterfrau' , '2012-01-03' , 'Text B' , 3 , 'Roller ');
    
    Select Kunde_ID, Name, VK_Datum, Infotext, Position, Artikel
    from @mytab;

    Dann habe ich eine Tabelle in den Report eingefügt und dort die Felder Position und Artikel aufgenommen.
    Dann habe ich eine übergeordnete Gruppe (mit Gruppenkopf) nach Infotext erstellt und dort den Infotext angezeigt.
    Dann habe ich eine übergeordnete Gruppe nach Kunde_ID (mit Gruppenkopf) erstellt und diese Zeilengruppe dann mit VK_Datum erweitert. Rechts neben der Spalte mit Kund_ID habe ich noch zwei leere Spalten eingefügt. In dieser Zeile werden (von links) die Spalten Kunde_ID, Name, VK_Datum angezeigt.

    Alternativ habe ich das ganze nochmal so aufgezogen, dass ich die links eingefügten Spalten wieder gelöscht habe und alle Daten übereinander eingefügt habe.
    Die Tabelle hat dann also drei Spalten, in der obersten Gruppe steht Kunde_ID (Spalte 1), daneben Name (Spalte 2), VK_Datum (Spalte 3).
    In der  zweiten Gruppe ist die erste Spalte leer und Infotext zieht sich über Spalte 2 und 3.
    In der Detail-Zeile ist die erste Spalte leer und dann kommen Position (Spalte 2) und Artikel (Spalte 3).

    HTH!

    Kommen bei Deiner Prozedur wirklich alle Zeilen zurück?

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Montag, 17. September 2012 11:39
  • Hallo Mining,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 24. September 2012 14:42
    Moderator
  • Hallo Christoph,

    vielen Dank für deine Antwort. Die Gruppierung scheint zu funktionieren.

    Viele Grüße

    Freitag, 28. September 2012 10:19