2009-06-27 4 views
11

Ich habe einen Bericht in SSRS mit zwei Berichtsparametern erstellt. Ich möchte, dass die Sekunde ihre Werte basierend auf der Auswahl in der ersten aktualisiert. Die erste ist eine Liste von Verkaufsagenten und die zweite ist eine Liste von Händlern. Jeder Agent kann viele Distributoren haben.Aktualisieren von Berichtsparametern basierend auf der Parameterauswahl? (SSRS)

Wenn der Bericht Benutzer einen Agenten auswählt, möchte ich nur ihre Verteiler in Liste für die zweiten Parameter anzeigen. Offensichtlich stammen die Parameterwerte von einer Abfrage, aber ich weiß nicht, wie man die Liste erneut bindet, wenn sie einen Agenten ausgewählt haben.

Antwort

12

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

  • zunächst einen primären (Bericht)-Datensatz, dann einen Datensatz für jeden Parameter Dropdown einrichten. Codieren Sie die WHERE-Klausel in den Datasets, um die Abhängigkeiten zwischen den Parametervariablen zu korrigieren.
  • Zweitens, ordnen Sie Ihre Parameter im Report | Parameter-Menü, so dass die erste Variable/Parameter, die der Benutzer ausfüllen soll, ist an der Spitze, und machen Sie den zweiten Datensatz abhängig von diesem Parameter. Folge dieser Reihenfolge durch die Parameter; Der letzte Parameter sollte derjenige sein, von dem der tatsächliche Berichtsdatensatz abhängt.
  • Wiederholen für nachfolgende Parameter

Das funktioniert, wenn Ihre WHERE Klausel in der zweiten und nachfolgenden Datensätze Variablen haben, die SSRS weiß aus früheren Parametern bestückt sind.

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

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

select pub_id, pub_name from publishers 

titleslist füllt die @t Parameter und sieht wie folgt aus:

select title_id, title from titles where pub_id = @p 

Schließlich reportdataset sieht aus wie dies:

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

Die Reihenfolge der Parameter im Menü Report | Report Parameters ist entscheidend; Da die Datasets in der oben angegebenen Reihenfolge ausgeführt werden müssen und der @ t-Parameter in einem Dataset enthalten ist, das darauf basiert, dass der @ p-Parameter zuerst festgelegt wird, verschieben wir @p an den Anfang der Liste.

Jetzt wertet SSRS den Datensatz aus, der benötigt wird, um das Dropdown für den ersten Parameter mit Beschriftungen zu füllen. Es beruht auf einem Dataset, das keinen Parameter benötigt und daher sofort erstellt werden kann.

Mit diesem Parameterwert kann dann das Dropdown-Menü des zweiten Parameters ausgefüllt werden. Dies wiederum führt dazu, dass der Bericht erstellt wird.

+0

Jeremy, können Sie zeigen zu einem Beispiel, oder schließen Sie einen in Ihrer Antwort ein? Vielen Dank. –

+0

Ok, das habe ich gemacht: Ich habe zwei Parameter, @SalesRep und @Distributor (beide sind Strings). Jetzt ist das Dataset für den Vertriebsmitarbeiter nur eine Abfrage.Aber der Datensatz für den Verteiler-Parameter ist eine Abfrage wie folgt: SELECT [Kundennummer] AS-ID, [Kundenname] AS-Name VON Distributors Wo [Sales Representative] = @ SalesRep- ORDER BY-Name Beachten Sie die Abhängigkeit auf dem Parameter @SalesRep. Stellen Sie in den Berichtsparametern sicher, dass @SalesRep über @Distributor angeordnet ist. –

+1

Yup, du hast es. Der oberste Parameter muss der Datensatz ohne Abhängigkeiten sein. Es erzeugt das Dataset, um den zweiten Parameter zu füllen, und so weiter. –

2

Ich habe das selbst nicht versucht, aber ich sah ein Beispiel, wo sie Verfügbare Werte konfiguriert, um von einer Abfrage zu kommen, und dann einen Ausdruck verwendet, um die Abfrage anzugeben. Der Ausdruck enthielt den Wert des ersten Parameters.

+0

Das funktioniert. – LWoodyiii

3

Zuerst erstellen Sie ein Dataset mit einer Liste von Elementen, aus denen der Benutzer auswählen kann.

Select ID,Agentname from Agents Order by Agentname 

Anschließend erstellen Sie den zweiten Datensatz;

z. Select ID,ItemName from Orders where [email protected]

In Ihrem Berichtsparameter, klicken Sie auf AgentID und dann auf eine Abfrage nach verfügbaren Werten. Sie wählen Dataset1 und ID als Wert und AgentName als Label.

Ihr letzter Datensatz wird die tatsächlichen Daten sein. Dabei erstellen Sie Ihre Aussage wie:

Select Quantity, Amount From Orderdetails where [email protected]

Im Reporting Service, gehen Sie in den Parameter und der eingestellten Auftragswert von Dataset2

So ist die Reihenfolge der Parameter erhalten sollte AgentID, orderid werden. Der Reporting Service fragt automatisch nach Parametern nach Bestellung.

3

Sie werden wahrscheinlich brauchen eine gemeinsame Datenquelle für die mehrere Datensätze

  1. Entwurf des Berichts wird zunächst mit der Abfrage und Felder ohne Parameter angezeigt werden, erstellen. Auf diese Weise können Sie den Hauptdatensatz des Berichts festlegen.
  2. aktualisieren Sie die Abfrage des Datasets durch Hinzufügen des Parameters. Verwenden Sie immer @ vor param_name
  3. in der Bericht Layout-Ansicht, klicken Sie mit der rechten Maustaste und wählen Sie Parameter aus dem Popup-Menü.
  4. Die Parameterliste hat automatisch den Parameter_Name ohne das @ -Zeichen.
  5. den Parameter aus der Liste auswählen und die seine Eigenschaften aktualisieren ...
  6. , wenn Sie den Bericht an, es für einen Wert eingegeben für param_name vor der Anzeige des Berichts ...

  7. jetzt fragen gehen auf Daten Registerkarte, und fügen Sie neue Datenmenge .... rufen Sie es dsPopParam

  8. die Abfrage wird verwendet, um den param_name Parameter zu füllen .... keine Parameter hier benötigt.
  9. Wiederholen Sie die Schritte 3 bis 5, aber aktualisieren Sie in Schritt 5 die Eigenschaftseinstellung im Bereich Verfügbare Werte auf aus Abfrage und wählen Sie das Dataset dsPopParam aus. Value- und Label-Felder sind die Felder, die von der Abfrage von dsPopParam zurückgegeben werden.
  10. die Registerkarte Ansicht wählen Sie erneut und beachten Sie die Dropdown-Listenfeld dieses Mal die Liste der Parameter enthalten ....

Wichtiger Hinweis: der Bericht im Fall habe machen oder eine Ausnahme nicht nur geworfen wurde, Wechseln Sie erneut zum Daten-Tab, wählen Sie das Berichts-Dataset und führen Sie die Abfrage aus, Sie werden aufgefordert, einen Wert für param_name einzugeben ... es einzugeben und auszuführen ... dann wechseln Sie zur Vorschau Registerkarte und

Verwandte Themen