Reporting Services Cscading Parameter aktualisieren
Habe ich gegoogelt es sehr und gefunden, dass es in der Regel nicht getan werden kann. Ich kam in einen der hacks hier:
http://www.bp-msbi.com/2011/04/ssrs-cascading-parameters-refresh-solved/
Sondern seine nicht funktioniert für mich in ssrs 2005. Einfach Fragen, wenn jemand anderes versucht, es in 2005.
Oder gibt es irgendwelche anderen hacks, die ausprobiert werden können.
Laut diesem Artikel werden die abhängigen parameter aktualisiert, erst wenn die Werte ungültig sind von der Auswahl im ersten parameter. Wenn wir können zum erlöschen der abhängigen parameter jedes mal, wenn ein parameter ändert, werden wir erzwingen einen kompletten refresh. Eine einfache Möglichkeit, dies zu tun, ist das Anhängen einen Wert wie eine GUID, die mit der NEWID () - T-SQL-Funktion.
Also im Grunde möchten wir Ihnen vorstellen eine gefälschte parameter zwischen zwei realen Parameter. Diese fake-parameter zurückgeben sollte, die neuen Werte immer als die storedproc dahinter fügen Sie eine guid, um die Ergebnismenge jedesmal, dass die proc aufgerufen wird. So erzwingt er eine vollständige Aktualisierung von anderen Parametern.
Nun die wichtigste Frage ich bin vor ist :
Einstellung der default-Wert dieses fake-parameter.
Für die Werte, die storedproc hinter dem fake-param läuft und es gibt Daten im format sagen : result1,result2_GUIDFROMSQL
Nun sieht es so aus das gleiche storedproc wird erneut aufgerufen, um die defult Wert, wenn ich es Frage, um den default-Wert aus der Abfrage. Aber als die storedproc wird erneut ausgeführt neue guid kommt und so wird der alte Wert nicht gefunden werden kann, so ist es nicht wird wie gewünscht eingestellt.
Brauche ich nur um herauszufinden, einen Mechanismus zur Weitergabe der guid aus eingeführt param auf die nächste param.
Das ist, wo ich bin, zu scheitern.
Mein Problem kann einfach repliziert werden, durch die Schaffung einer param dessen datasource ist dieser querystring.
select getdate() id, @name nid
So, in diesem Fall, wie Sie einen Standardwert für diesen Parameter.
- Könnten Sie etwas näher auf das genaue problem, das Sie lösen möchten, und vielleicht auch zu zitieren die relevanten bits aus deinem link so, dass, wenn die Verbindung stirbt dieser Frage wird noch Sinn machen, auf seine eigene?
- Danke Jeroen für die es bei der Suche. Ich habe eine bearbeitet die Frage auf der Grundlage Ihrer Kommentare. Hoffe, die Sache jetzt klarer.
- Vielen Dank für das update, das sollte helfen. Ich muss zugeben, die Frage ist immer noch ein bisschen schwer zu Lesen, und ich bin auch nicht ganz verstehen, die die Frage, aber vielleicht kann jemand anders helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unten werde ich zu einer detaillierten Szenario-und dann werde ich eine Beispiel-Implementierung, basierend auf Visser und Abbi Antworten.
Vorstellen, dass ich einen Bericht haben, wo jede Zeile ist ein Projekt. Ein Projekt hat eine Status-Spalte mit den Werten "In Bearbeitung" oder "Abgeschlossen" und ein Projekt-Manager, Spalte, deren Werte den Namen einer person. Hier sind die Zeilen in der Tabelle:
Möchte ich haben 2 Parameter, die auf meinen Bericht
false
zeigt nur an "In Progress" - Projekte A & Btrue
zeigen wird "In Progress" - Projekte A & B zusätzlich zu den "Complete" - Projekte, C, D, & E.false
dann nur "Bob" und "Tom" Optionen zeigen sich, weil Sie das Projekt Managern für die in-progress-Projekte Projekt A & B bzw..true
dann neben "Bob" und "Tom" werden Sie auch "Jack" und "Jill" als Optionen, denn Sie sind Projekt Manager für die inaktive Projekte Projekt C & Projekt E bzw.Nun für die Umsetzung:
Abgeschlossene Projekte Anzeigen? parameter
Projektmanager dataset-Abfrage (Siehe Visser und Abbi Antworten für details auf, wie dieses generiert den Schlüssel, das wird sich ändern, basierend auf den unabhängigen parameter und zwingen wird, SSRS, um neu zu laden der default-Werte)
Projekt Manager parameter
Allgemeinen
Verfügbaren Werte
Default-Werte
Projekte dataset
Abfrage
Parameter (Stellen Sie sicher, zu beachten, die
[@ProjectManager.Label]
Teil, die es in das Projekt passen auf das eigentliche Projekt-manager Wert aus der Datenbank und nicht die Schlüssel, die wir generiert.Schließlich war ich in der Lage diese zu lösen. Dieser link war hilfreich starten.
http://www.optimusbi.com/2012/07/16/multilevel-cascading-select/
Im Grunde, was es tut, ist : Schreiben von parameter-Abfrage in einer Weise, so dass die abhängigen parameter ändert Ihren Wert jedes mal ändern Sie den parameter parent.
Die Abfrage fügt rownumber mit einem "_" Vorhergehender es. Also jedes mal, wenn Benutzer andere Werte die Zeilenzahl ändert, und daher ist die Abfrage Ergebnismenge.
Dann, wenn Sie mit der Ergebnismenge entfernen Sie den text nach dem Unterstrich, um den realen codes.
Es ist eine Problemumgehung um dieses Problem zu beheben, die für alle Situationen.
Beachten Sie, dass die Vorherige Antwort, schreiben der parameter in der Abfrage in einer Weise, so dass die abhängigen parameter ändert Ihren Wert jedes mal ändern Sie den parameter parent, funktioniert bei einigen Fällen, aber nicht allen Fällen. Wenn die abhängigen parameter der "Available" - Werte ändern sich als Ergebnis der weiteren parameter UND die davon abhängigen parameter sichtbar ist, funktioniert es, Wenn der abhängige parameter ist ausgeblendet oder intern, oder wenn die "Verfügbar" - Werte nicht ändern, wie ein Ergebnis der anderen parameter, wird es nicht funktionieren.
Die einfachste Abhilfe ist es, eine benutzerdefinierte Funktion definieren, die im Bericht und nennen Sie es in einen Ausdruck für die abhängigen parameter. Die benutzerdefinierte Funktion verwendet die parameter (die parameter die abhängigen parameter hängt davon ab) - Wert als argument und gibt einfach seinen Wert. Obwohl die Funktion einfach den Wert und Rückgabe, SSRS nicht, prüfen Sie den code und setzt Voraus, dass der code etwas tun konnte (eine Zufallszahl erzeugen, ziehen Sie Dateien von der Festplatte, etc ...). So SSRS ruft die Funktion auf jedes einzelne mal, wenn der Wert geändert wird, unabhängig davon, ob die abhängigen parameter der "Available" - Werte ändern sich, und unabhängig davon, ob der abhängige parameter ist sichtbar, ausgeblendet oder interne.
Etwas wie dieses:
Nehme an, Sie haben zwei Parameter:
Parameter1
Parameter2
Ist und dass Parameter2, hängt von Parameter1.
Set Parameter2 Wert als ein Ausdruck mit dem Aufruf Parameter1 mit der Funktion, wie:
Nun in diesem Fall Parameter2 zeigt einfach den Wert in Parameter1, aber diese Logik kann erweitert werden, um komplexere Ausdrücke zu erstellen und mehr als einen parameter. Solange es einen CODE gibt.returnArg (...) - Funktion aufrufen, die für jeden parameter in dem Ausdruck, SSRS immer aktualisieren Sie den Wert.
@Abbi ' s zweiten link ist nicht mehr gültig. Der Artikel kann nun hier gefunden werden:
http://www.optimusinfo.com/multilevel-cascading-select/
Leider sind die Bilder kaputt sind und der Artikel ist ein wenig unvollständig ohne Sie. Es ist ein Bild, das ich in der Lage war zu finden in Ihrer Lage verschoben (konnte ich nicht finden, die andere sogar mit dem Versuch, entsprechende Variationen): http://www.optimusinfo.com/wp-content/uploads/2012/07/Multilevel-Cascading-with-Select-All-18.jpeg
Dies gab mir den letzten Hinweis, den ich brauchte, um die Technik: beim einrichten der dataset-parameter-Eigenschaften, müssen Sie manuell geben Sie den Parameterwert wie z.B. [@Stadt.Bezeichnung] lieber als die üblichen plain old [@Stadt] (entspricht [@Stadt.Wert].
Dies ist, weil die Technik ändert sich das "Wert", um einen benutzerdefinierten Wert, die können nicht mehr nachgeschlagen werden, die in der DB! So müssen Sie mit der Benutzer-freundliche, db-vorhandenen "Label" als parameter. (Sollte wohl klar sein, aber...) Der rest ist alles ziemlich standard, wenn Sie verstehen, Berichts-generator.
Beachten Sie auch, dass dieser link so wie es da steht funktioniert nicht mit multi-Wert kaskadierende Parameter. Aber es kann leicht modifiziert werden, um so zu tun: verändern der parameter gespeicherte Prozeduren zum beitreten zu einem Wert splitting-Funktion. Angepasst ich mir aus dem udf_splitvarible Funktion, die bei SQL Server - In-Klausel mit einer deklarierten variable
Die änderung ist relativ einfach, aber ich gebe Ihnen ein Beispiel. Dies ist aus dem Artikel (mit schrecklicher Formatierung behoben).
Ändern:
zu:
Dies alles gilt für SQL Server 2008/Berichts-generator 3.
War ich nicht in der Lage zu verstehen/anwenden @borkmark Antwort. Die Grenzen scheinen nicht zu gelten, zu meinem Fall.