2016-11-01 8 views
0

Verwendung von SQL 2008R2SSRS Dynamische Spalten anzeigen

ich das Bedürfnis habe einen SSRS-Bericht zu erstellen, in dem der Benutzer die Spalten zurückgegeben und die Reihenfolge festlegen, in der sie zurückgegeben werden. Dynamische Daten und Bestellung.

Beispiel: Verfügbare Spalten A, B, C, D, E

Benutzer sie sehen wollen gibt: C, D, A

Kein Problem auf der Seite Daten, ich bin mit einem gespeicherte Prozedur und kann damit kein Problem umgehen.

Auf der SSR-Seite habe ich ähnliche Frage erwähnen mit einer "Matrix" gesehen.
Allerdings bin ich auf der Suche nach Meinungen über die beste Vorgehensweise, wie Sie dies auf der SSRS-Seite behandeln. Was ist der beste Weg, um dynamische Anzahl der zurückgegebenen Spalten und dynamische Reihenfolge der Spalten zu behandeln.

+0

Können Sie einige Beispieldaten bereitstellen? – newGuy

+0

Dies ist keine Straße, die Sie mit SSRS hinuntergehen wollen, erwägen, SSAS für so etwas zu verwenden. –

Antwort

0

Wie bereits erwähnt, SSRS ist nicht der Weg dafür.

Wenn die Reihenfolge der Spalten nicht anpassbar ist, können Sie die Spaltensichtbarkeit mit SSRS-Ausdrücken behandeln, aber das Präsentieren der Spalten in einer dynamischen Reihenfolge ist in SSRS nicht einfach.

Für diese Art von Sache könnten Sie die Pivot-Tabellen-Funktionalität von Excel verwenden, eine .NET-Lösung von Drittanbietern wie MVC verwenden oder eine eigenentwickelte ASP.net-Lösung erstellen.

+0

Für die Spaltenanpassung dachte ich daran, einfach die angeforderten Spalten an den Stored Proc weiterzuleiten, dann am Ende der Prozedur, sobald alle Daten verarbeitet wurden und sich in einer Temp-Tabelle befinden. Ich würde Dynamic SQL verwenden, um NUR die angeforderte Spalte .... in der angegebenen Reihenfolge zurückzugeben. Also wirklich, was ich suchte, ist mehr von einem Ich muss Daten auf einem Bericht anzeigen (grid - wie?), Aber nicht notwendigerweise wissen, welches Feld in welcher Spalte sein würde. Ich wollte einfach nicht sagen, Spalte1 auf einem Raster/Matrix ist "Gender". Ich würde es vorziehen, wenn es nicht wirklich wichtig ist, was in dieser Position heruntergekommen ist. – JTSOne

0

Try this:
1. In SSRS erstellen Parameter ColumnA und columnB

  1. Erstellen Sie Ihre Datenmenge --- nicht direkt Ihre Abfrage eingeben, verwenden Ausdruck (die fx-Taste) enter image description here

  2. In dem Ausdruck, können Sie Ihre Abfrage wie folgt schreiben:
    = "SELECT" + Parameter ColumnA.Value + "" + Parameter ColumnA.Value + "aus der Tabelle"!

Sie können Ihr dynamisches ORDER BY-Problem auf die gleiche Weise lösen.

+0

Weitere Tipps, die Sie ausprobieren sollten (ich bin mir nicht sicher, ob das auch funktionieren würde): Sie können versuchen, den Column-Parameter mehrfach zu akzeptieren. Sie können den verfügbaren Wert des Parameters als Namen der Spalten in dieser Tabelle festlegen oder ihn aus einer Abfrage abrufen, um ihn dynamischer zu gestalten. Verwenden Sie dann die JOIN-Funktion in Ihrem Abfrageausdruck, um sie zu verketten. So: JOIN (Parameter! Column.Value, ",") Viel Glück! –

+0

Danke. Ich mache das jetzt ziemlich oft! Also mein Zellenausdruck ist etwas wie: = Felder (Split (Parameter! PRequestedColumns.Value, ",") (0)). Wert Wo (0) ist die Ordinalposition der angeforderten Spalten. Mein Problem im Moment ist, dass, wenn ich habe, wenn ich angefordert n Anzahl der Spalten dann wenn ich maximal mögliche Spalten (sagen wir 10) eingerichtet wie oben, wenn ich nur 3 von möglichen 10, dann meine Spalte 4 an 10 als "#fehler" anzeigen. Ich versuche, einen Spaltensichtbarkeitsausdruck zu erzeugen, der die Spalte versteckt, wenn sie nicht angefordert wird, aber ich kann es im Moment nicht herausfinden. – JTSOne

+0

@JTSOne Ich würde auch versuchen, an der Spaltensichtbarkeit zu arbeiten. Warum sollten Sie nicht einfach alle Spalten in die SELECT-Anweisung in Ihrem Dataset einfügen und die Spaltensichtbarkeit basierend auf der Benutzerauswahl im Parameter festlegen? Es sei denn, Sie versuchen, die Anzahl der Spalten für eine bessere Leistung zu eliminieren. –