2012-06-12 9 views
6

In einem Bericht habe ich ein Dataset mit einem Filter (basierend auf einem MultiValue-Parameter).Reporting Services: Alle Felder auf einem Dataset beitreten

Dieser Datensatz enthält zwei Felder: ID und Name.

Ich brauche irgendwo die Verkettung aller Namen angezeigt werden:

Name1/Name2/Name3 

Das Problem ist, dass die join Methode nur auf Array funktioniert, und dann kann ich nicht einen Datensatz als Wert angeben.

Ich sah in benutzerdefinierten Code auch, aber ich habe nichts funktioniert gefunden.

Wie soll ich das tun?

Antwort

2

SSRS-2008 R2 und höher ...

1. Mit LookupSet
Wenn Sie über die 2008-Version OP sind hat, gibt es eine gute Lösung:

=Join(LookupSet(1, 1, Fields!Name.Value, "DatasetName"), "/") 

Kredit für diese Antwort mit the LookupSet solution geht vollständig zu @urbanhusky's answer.


SSRS-2008 und niedriger ...

ich aber diese Antwort bin zu halten, weil es aggregiert @-Lösung urbanhusky mit den zur Verfügung stehenden Lösungen armen Seelen mit OP-Version von SSRS stecken und unten.

In SSRS 2008 gibt es nur drei "Optionen", soweit ich sehen kann, jeder mit seinen eigenen Nachteil. Der erste ist wahrscheinlich der kleinste hackish.

2. Zusätzlicher Parameter
Einen internen Parameter (zum Beispiel "NameParameter", siehe this SO answer oder MSDN) mit Mehrere Werten zulassen. Legen Sie den Standardwert des Parameters aus Ihrem Dataset auf das Feld Name fest. Verwenden Sie dann die Funktion , um die verbundenen Namen in einem Textfeld anzuzeigen.

Dies ist vielleicht Ihre beste Wahl, aber wenn es viele Werte gibt, funktioniert der Parameter möglicherweise nicht sehr gut.

3. Verwenden Sie eine Liste
Liste erstellen und per Drag/Drop das Namensfeld zu. Ggf. auch den Namen gruppieren.

Der Nachteil ist, dass (AFAIK) die Liste nicht horizontal dargestellt werden kann.

4. Verwenden Sie eine Matrix
Oh Junge, das eine wirkliche hässlich. Nichtsdestotrotz gilt: Erstellen Sie eine Matrix, ziehen Sie das Feld Name in die Spaltenüberschrift und blenden Sie die erste Spalte sowie die zweite Zeile aus (um die Daten anzuzeigen).

Der größte Nachteil ist, dass es ein Hack ist (und ganz etwas übertrieben), und Sie werden die letzten seperator Zeichen manuell mit einem Ausdruck trimmen müssen.

+0

Leider kann ich nicht: 1. Ich erhalte nur die ID vom Sender, 2. ich habe dies in einer horizontalen Art und Weise zu stellen, 3. ich habe bereits versucht, aber ich habe die Breite jeden Spalt angeben :( – J4N

+0

Mit der Option 1 bedeuten, dass ich einen * internen * Parameter, nicht eine der Benutzer zu füllen, aber eines, das von der Datenmenge gefüllt ist. – Jeroen

+0

Oh? ich weiß es nicht, diese Art von „internen Parameter“ Sie haben einige Informationen über das? – J4N

15

ich vielleicht ein bisschen zu spät dafür, aber für jeden, der daran interessiert ist, gibt es eine ziemlich einfache Möglichkeit, dies in SSRS zu tun:

=Join(LookupSet(1,1,Fields!Name.Value, "DatasetName"),"/") 
+0

'LookupSet' nicht verfügbar in ssrs-2005. Irgendeine ähnliche Lösung? – maxx777

+0

Entschuldigung, ich kenne keine andere Methode. – urbanhusky

+0

Legend ist LookupSet ziemlich schlecht dokumentiert - die ersten beiden Parameter 1 ist der Trick ist hier. – meataxe