2008-09-17 17 views
7

Chciałbym mieć możliwość przechodzenia przez wszystkie zdefiniowane parametry w raportach i tworzenia łańcucha wyświetlania nazwy parametru i wartości. Następnie wyświetliłbym wyniki w raporcie, aby użytkownik wiedział, które parametry zostały użyte do tego konkretnego wykonania. Jedynym problemem jest to, że nie mogę przechodzić przez kolekcję parametrów. Wydaje się, że nie ma indeksu w kolekcji Parameters, ani nie wydaje się implementować IEnumerable. Czy ktoś był w stanie to zrobić? Korzystam z usług SSRS 2005 i musi on zostać zaimplementowany w ramach kodu raportu (tzn. Bez zewnętrznego zespołu). Dzięki!SSRS 2005 - Zapętlanie przez parametry raportu

Odpowiedz

1

Niestety, wygląda na to, że nie ma prostego sposobu na zrobienie tego. Aby uzyskać więcej informacji, patrz http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx. Jeśli spojrzeć na comments of that post, istnieje kilka sposobów na obejście tego, ale nie są one bardzo eleganckie. Najprostsze rozwiązanie będzie wymagało posiadania listy parametrów raportu gdzieś w kodzie raportu, co oczywiście narusza zasadę DRY, ale jeśli chcesz najprostszego rozwiązania, możesz po prostu z tym żyć.

Być może zechcesz ponownie przemyśleć swoje ograniczenia dotyczące braku montażu zewnętrznego, ponieważ wydaje mi się, że byłoby o wiele łatwiej zrobić to za pomocą zewnętrznego zespołu. Lub jeśli twój raport nie zmieni się zbytnio, możesz ręcznie utworzyć listę nazw parametrów i wartości.

+0

Nie zdawałem sobie sprawy, że ma na myśli raport w trakcie renderowania. Użyję refleksji, aby zagłębić się w Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Parameters, aby sprawdzić, czy można go rzucić na coś bardziej dostępnego. –

0

Jeśli rozumiem twoje pytanie, po prostu rób to, co robię: Upuść pole tekstowe w raporcie, a następnie podczas konfigurowania raportu wstaw następujące dane: = "Parametr 1:" Parametry + Parametry! Etykieta + ", parametr2:" + parametry! Parametr2.Label ...

To nie jest najładniejsza rzecz, ale w naszej aplikacji działa całkiem nieźle.

Używam etykiet zamiast wartości, ponieważ mamy wartości datetime, a użytkownik dba tylko o krótką datę lub miesiąc i rok (w zależności od okoliczności), a ja już to zrobiłem w konfigurowanie parametrów.

0

Mogę wymyślić co najmniej dwa sposoby na zrobienie tego. Pierwszy może działać, drugi na pewno zadziała.

  1. Skorzystaj z usługi internetowej. Jestem prawie pewien, że widziałem API do pobierania zestawu parametrów. Nawet jeśli nie ma bezpośredniego dostępu, zawsze możesz utworzyć standardową kolekcję i skopiować obiekty ReportParameter z jednego do drugiego w pętli foreach - a następnie uzyskać dostęp do Count, z indywidualnymi właściwościami parametrów dostępnymi poprzez usunięcie odwołania instancji ReportParameter.

  2. Raporty to RDL. RDL to XML. Utwórz plik XmlDocument i załaduj plik RDL, a następnie użyj DOM do wykonania, cóż, wszystkiego co lubisz, włącznie z ustawianiem wartości domyślnych lub nawet przepisywania ciągów połączeń.

Jeśli Twoja aplikacja nie będzie miała dostępu do plików RDL w systemie plików, możesz uzyskać je za pośrednictwem usługi internetowej.

Powiązane problemy