Aktualizowanie parametrów raportu na podstawie wyboru parametrów? (SSRS)

Stworzyłem raport w SSRS z dwoma parametrami raportu. Chciałbym, aby drugi zaktualizował jego wartości w oparciu o wybór w pierwszym. Pierwszy to lista agentów sprzedaży, a drugi to lista dystrybutorów. Każdy agent może mieć wielu dystrybutorów.

Więc jeśli użytkownik raportu wybierze agenta, chciałbym, aby tylko jego dystrybutorzy pojawili się na liście dla drugich parametrów. Oczywiście wartości parametrów będą pochodzić z zapytania, ale nie wiem, jak to zrobić, aby ponownie wyświetlić listę raz wybierają agenta.

Author: Tony L., 2009-06-27

4 answers

Działa to automagicznie, jeśli poprawnie zamówisz swoje parametry i zbiory danych

  • najpierw skonfiguruj podstawowy (raport) zbiór danych, a następnie zbiór danych dla każdego rozwijanego parametru. Należy zakodować klauzulę WHERE w zestawach danych, aby skorygować zależności między zmiennymi parametrów
  • Po Drugie, Uporządkuj swoje parametry w menu raport / parametry tak, aby pierwsza zmienna / parametr, który chcesz wypełnić, znajdowała się na górze, a drugi zbiór danych zależał od ten parametr. Postępuj zgodnie z tą kolejnością poprzez parametry; parametrami końcowymi powinny być te, od których zależy rzeczywisty zestaw danych raportu.
  • powtórz dla kolejnych parametrów

To zadziała, jeśli twoja klauzula WHERE w drugim i kolejnych zestawach danych ma zmienne, o których SSR wiedzą, że są wypełniane z wcześniejszych parametrów.

Jako przykład, mam trzy zbiory danych z czcigodnej bazy danych pubs (Próbka w 2000 roku).

pubslist służy do wypełniania @p parametr i wygląda tak:

 select pub_id, pub_name from publishers

titleslist wypełnia parametr @t i wygląda tak:

 select title_id, title from titles where pub_id = @p

Wreszcie, reportdataset wygląda tak:

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

Kolejność parametrów w menu Report | Report Parameters jest kluczowa; ponieważ zbiory danych muszą być wykonywane w kolejności pokazanej powyżej, a parametr @t znajduje się w zbiorze danych, który opiera się na parametrze @p ustawionym jako pierwszy, przenosimy @p na górę listy.

Teraz SSRS ocenia zestaw danych potrzebny do wypełnienia rozwijanej listy dla pierwszy parametr z etykietami. Opiera się na zbiorze danych, który nie potrzebuje parametru, więc może być natychmiast wytworzony.

Następnie, po uzyskaniu tej wartości parametru, może wypełnić listę rozwijaną drugiego parametru. To z kolei skutkuje opracowaniem raportu.

 13
Author: Jeremy Smyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-27 19:30:56

Najpierw tworzysz zbiór danych z listą elementów, z których użytkownik wybierze.

Select ID,Agentname from Agents Order by Agentname

Następnie tworzysz drugi zbiór danych;

Np. Select ID,ItemName from Orders where agentid=@agentid

W parametrze raportu klikamy na parametr agentid, a następnie z zapytania NA dostępne wartości. Wybierz dataset 1 i ID jako value i AgentName jako Label.

Twój ostatni zestaw danych będzie rzeczywistymi danymi. W tym tworzysz swoją wypowiedź w stylu:

Select Quantity, Amount From Orderdetails where OrderID=@orderid

W serwisie reportażowym, przejdź do parametr i ustawiona kolejność pobierania wartości z Dataset2

Więc kolejność parametru powinna być agentid, orderid. Usługa raportowania automatycznie zapyta o parametr według zamówienia.

 3
Author: Joel M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-27 15:06:25

Najprawdopodobniej będziesz musiał utworzyć współdzielone źródło danych dla wielu zestawów danych

  1. najpierw Zaprojektuj raport z zapytaniem i polami, które mają być wyświetlane bez żadnych parametrów. W ten sposób będziesz mógł ustawić główny zbiór danych raportu.
  2. zaktualizuj zapytanie zestawu danych, dodając parametr. Zawsze używaj @ przed param_name
  3. w widoku układ raportu kliknij prawym przyciskiem myszy i wybierz parametry z menu podręcznego.
  4. Lista parametrów will automatycznie ma nazwę param_name bez znaku@.
  5. wybierz parametr z listy i zaktualizuj jego właściwości...
  6. Jeśli przejrzysz Podgląd raportu, zapyta o wartość wprowadzoną dla nazwy param_name przed wyświetlaniem raportu...

  7. Teraz przejdź do zakładki Dane i dodaj nowy zestaw danych.... nazwij to dsPopParam

  8. zapytanie zostanie użyte do wypełnienia parametru param_name.... tutaj nie są potrzebne żadne parametry.
  9. Powtórz kroki 3 do 5, ale w kroku 5 zaktualizuj ustawienie właściwości w sekcji Dostępne wartości na z kwerendy i wybierz dataset dsPopParam. Pola Value i Label będą polami zwracanymi z zapytania dsPopParam.
  10. ponownie wybierz kartę Widok i tym razem zwróć uwagę na rozwijaną listę parametrów....

Ważna uwaga: jeśli raport nie został renderowany lub wyjątek został wyrzucony, po prostu przełącz się ponownie na kartę Dane, wybierz zestaw danych raportu i wykonaj zapytanie, zostanie wyświetlony monit o wprowadzenie wartości dla nazwy param_name...wprowadź go i wykonaj... następnie przejdź do zakładki podgląd i

 3
Author: albostami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-21 20:15:35

Sam tego nie próbowałem, ale widziałem przykład, w którym skonfigurowano dostępne wartości, aby pochodzić z zapytania, a następnie użyto wyrażenia do określenia zapytania. Wyrażenie zawiera wartość pierwszego parametru.

 2
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-27 18:53:30