12 Stimmen

Aktualisieren von Berichtsparametern basierend auf der Parameterauswahl? (SSRS)

Ich habe einen Bericht in SSRS mit zwei Berichtsparametern erstellt. Ich möchte, dass der zweite seine Werte auf der Grundlage der Auswahl im ersten Parameter aktualisiert. Der erste ist eine Liste von Handelsvertretern, der zweite eine Liste von Vertriebshändlern. Jeder Vertreter kann viele Vertriebshändler haben.

Wenn der Benutzer des Berichts also einen Vertreter auswählt, möchte ich, dass in der Liste für die zweiten Parameter nur dessen Vertriebshändler angezeigt werden. Offensichtlich werden die Parameterwerte aus einer Abfrage kommen, aber ich weiß nicht, wie man es neu binden die Liste, sobald sie einen Agenten auswählen zu machen.

15voto

Jeremy Smyth Punkte 22624

Dies funktioniert automatisch, wenn Sie Ihre Parameter und Datensätze richtig anordnen

  • Richten Sie zunächst ein primäres (Berichts-)Dataset ein, dann ein Dataset für jedes Parameter-Dropdown. Kodieren Sie die WHERE Klausel in den Datensätzen, damit die Abhängigkeiten zwischen den Parametervariablen korrekt sind
  • Zweitens: Ordnen Sie Ihre Parameter im Menü Bericht | Parameter so an, dass die erste Variable/Parameter, die der Benutzer ausfüllen soll, steht oben, und der zweite Datensatz hängt von diesem Parameter ab. Folgen Sie dieser Reihenfolge durch die Parameter; der letzte Parameter sollte derjenige sein, von dem der eigentliche Berichtsdatensatz abhängt.
  • Wiederholen Sie den Vorgang für die folgenden Parameter

Dies funktioniert, wenn Ihr WHERE Klausel im zweiten und den nachfolgenden Datensätzen haben Variablen, von denen SSRS weiß, dass sie aus früheren Parametern gefüllt werden.

Als Beispiel habe ich drei Datensätze aus dem ehrwürdigen pubs Datenbank (Stichprobe im Jahr 2000).

pubslist wird verwendet, um den Parameter @p zu füllen, und sieht wie folgt aus:

 select pub_id, pub_name from publishers

titleslist füllt den Parameter @t auf und sieht folgendermaßen aus:

 select title_id, title from titles where pub_id = @p

Endlich, reportdataset sieht so aus:

 select title, price, ytd_sales from titles where title_id = @t

Die Reihenfolge der Parameter in der Report | Report Parameters Da die Datensätze in der oben gezeigten Reihenfolge ausgeführt werden müssen und der Parameter @t in einem Datensatz enthalten ist, der darauf angewiesen ist, dass der Parameter @p zuerst gesetzt wird, wird @p an den Anfang der Liste gestellt.

Nun wertet SSRS den Datensatz aus, der benötigt wird, um das Dropdown für den ersten Parameter mit Beschriftungen zu füllen. Er stützt sich auf einen Datensatz, der keinen Parameter benötigt und daher sofort erstellt werden kann.

Mit diesem Parameterwert kann sie dann die Auswahlliste des zweiten Parameters ausfüllen. Dies wiederum führt dazu, dass der Bericht erstellt wird.

3voto

Joel M Punkte 31

Sie erstellen zunächst einen Datensatz mit einer Liste von Elementen, aus denen der Benutzer eine Auswahl treffen soll.

Select ID,Agentname from Agents Order by Agentname

Anschließend erstellen Sie das zweite Dataset;

z. B. Select ID,ItemName from Orders where agentid=@agentid

In Ihrem Berichtsparameter klicken Sie auf den Parameter agentid und dann in einer Abfrage auf die verfügbaren Werte. Sie wählen dataset1 und ID als Wert und AgentName als Label.

Ihr letzter Datensatz wird die eigentlichen Daten sein. In diesem erstellen Sie Ihre Anweisung wie:

Select Quantity, Amount From Orderdetails where OrderID=@orderid

Im Berichtsdienst gehen Sie auf Parameter und setzen Order, um den Wert aus Dataset2 zu erhalten.

Die Reihenfolge der Parameter sollte also agentid, orderid sein. Der Reporting Service wird automatisch nach der Reihenfolge der Parameter fragen.

3voto

albostami Punkte 31

Wahrscheinlich müssen Sie eine gemeinsame Datenquelle für die verschiedenen Datensätze erstellen

  1. Entwerfen Sie den Bericht zunächst mit der Abfrage und den Feldern, die ohne Parameter angezeigt werden sollen. Auf diese Weise können Sie den Hauptdatensatz des Berichts festlegen.

  2. die Abfrage des Datensatzes durch Hinzufügen des Parameters aktualisieren. immer @ vor param_name verwenden

  3. Klicken Sie in der Berichtslayoutansicht mit der rechten Maustaste und wählen Sie Parameter aus dem Popup-Menü.

  4. enthält die Parameterliste automatisch den Parameternamen ohne das @-Zeichen.

  5. wählen Sie den Parameter aus der Liste aus und aktualisieren Sie seine Eigenschaften...

  6. Wenn Sie den Bericht in der Vorschau anzeigen, wird vor der Anzeige des Berichts die Eingabe eines Werts für param_name verlangt...

  7. Gehen Sie nun auf die Registerkarte Daten und fügen Sie einen neuen Datensatz.... hinzu, nennen Sie ihn dsPopParam

  8. die Abfrage wird verwendet, um den Parameter param_name aufzufüllen.... hier werden keine Parameter benötigt.

  9. Wiederholen Sie die Schritte 3 bis 5, aber aktualisieren Sie in Schritt 5 die Eigenschaftseinstellung im Abschnitt Verfügbare Werte auf von Query und wählen Sie den Datensatz dsPopParam. Die Felder Value und Label sind die Felder, die aus der Abfrage von dsPopParam zurückgegeben werden.

  10. Wählen Sie erneut die Registerkarte "Ansicht" und beachten Sie dieses Mal das Dropdown-Listenfeld mit der Liste der Parameter....

Wichtiger Hinweis Falls der Bericht nicht gerendert wurde oder eine Ausnahme ausgelöst wurde, wechseln Sie einfach wieder auf die Registerkarte Daten, wählen Sie den Berichtsdatensatz aus und führen Sie die Abfrage aus. Sie werden aufgefordert, einen Wert für param_name einzugeben... geben Sie ihn ein und führen Sie ihn aus... wechseln Sie dann zur Registerkarte Vorschau und

2voto

John Saunders Punkte 159011

Ich habe das nicht selbst ausprobiert, aber ich habe ein Beispiel gesehen, in dem die verfügbaren Werte so konfiguriert wurden, dass sie aus einer Abfrage stammen, und dann ein Ausdruck verwendet wurde, um die Abfrage anzugeben. Der Ausdruck enthielt den Wert des ersten Parameters.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X