2012-04-26 15 views
9

Rozumiem, że Crystal Reports nie przyniosło korzyści niektórym z społeczności programistów i być może słusznie: nie używałem tego od około 15 lat. Ale kiedy to zrobiłem, mogłem go śpiewać.Korzystanie z pól w wielu zestawach danych w SSRS

Być może dlatego tak bardzo rozczarowuję system SSRS. Oprogramowanie jest niezgrabne, nieintuicyjne i jednowymiarowe. Walczę z nim przez ostatni tydzień, a ja zamieszczam tutaj jako ostatnią deskę ratunku.

Zostałem zmuszony do utworzenia mojego raportu w całości w tabeli SQL Server i nie powinienem tego robić.

Na przykład: dlaczego nie można użyć wyrażenia w polu tekstowym;

Fields!Foo1.Value/Fields.Foo2.Value 

gdzie Foo1 jest w zestawie danych1, a Foo2 w zestawie danych2.

Jeśli to wykracza poza możliwości oprogramowania, jest OK. Zaczynam myśleć, że tak.

Więc może ktoś może odpowiedzieć na to pytanie: Czy ktoś wie o jakimkolwiek innym oprogramowaniu do raportowania, oprócz Crystal Reports i Reporting Services, które są bardziej wszechstronne?

Odpowiedz

6

Ani program Crystal, ani SSRS nie umożliwiają bezpośredniego porównywania wartości w dwóch różnych zestawach danych w kolejności rząd po rzędzie.

W zarówno narzędzia:

  • Jeśli oba zbiory danych pochodzą z tego samego relacyjnej bazy danych, to najprostszy sposób, aby porównać wartości jest połączenie tych dwóch zestawów danych w jednym zapytaniu.
  • Jeśli oba zestawy danych pochodzą z różnych relacyjnych baz danych, które można ze sobą łączyć (na przykład przy użyciu serwerów połączonych w SQLServer lub łączy baz danych w Oracle), najprostszym sposobem porównania wartości jest połączenie dwóch zestawów danych w pojedynczy zbiór danych. zapytanie, które uzyskuje dostęp do obu połączonych baz danych.
  • Jeśli oba zestawy danych pochodzą ze źródeł danych, które nie mogą być bezpośrednio ze sobą połączone, wówczas oba zbiory danych można połączyć w Crystal/SSRS za pomocą podraportu. (więcej szczegółów na temat podraportów w SSRS here.)

Jest narzędziem do raportowania o nazwie BIRT że ma podobny paradygmat raportowania do SSRS (ie.układ w stylu strony internetowej, zamiast pasmowego podejścia do raportowania Crystal), zawiera wiele takich samych funkcji jak SSRS, jest oprogramowaniem typu Open Source i umożliwia bezpośrednie łączenie zbiorów danych w celu utworzenia wspólnych zestawów danych. Jednak jest mniej intuicyjny w użyciu niż Crystal lub SSRS.

+0

Dziękuję za odpowiedź. –

3

Trzymaj się z nim - Reporting Services to niezwykle elastyczna platforma raportowania.

Możesz zrobić, co chcesz, określając zestaw danych po nazwie pola, ale musisz określić, które Foo2 chcesz i jak chcesz sobie poradzić z Foo2.

Sposób, w jaki to robisz, odbywa się za pośrednictwem funkcji agregujących. Na przykład, powiedzmy Dataset2 ma jeden wiersz danych tylko wtedy dostajesz pierwsza:

=Fields!Foo1.Value/First(Fields!Foo2.Value, "Dataset2") 

Jeśli istnieje wiele wierszy i chcesz podzielić przez sumę foo2 następnie można to zrobić:

=Fields!Foo1.Value/Sum(Fields!Foo2.Value, "Dataset2") 

Chodzi o to, że obecnie przechodzisz przez Zestaw danych1 - musisz pozwolić, aby Reporting Services wiedział, jak postępować z Dataset2, aby zwrócić Foo2, którego potrzebujesz.

+0

dzięki za odpowiedź i zachęty. Jednak to tylko problem. Muszę przetwarzać wiersz po wierszu w szczegółach, a nie w agregatach. Co więcej, obliczam kolumnę procentową z wartością wiersza z Dataset1 i Dataset2. –

+4

Dlaczego nie po prostu dołączyć do tabel przy użyciu SQL w źródle danych i mieć wszystkie potrzebne dane w jednym źródle danych? –

+0

OK. Dobry pomysł. Spróbuję tego. Dzięki za pomoc. –

8

Myślę, że zostałbyś rozwiązany już teraz, jednak jeśli masz do czynienia z tym samym problemem, możesz użyć wyrażenia lookup.
To pozwoli Ci przeglądać wartości innego zestawu danych, podczas gdy istnieje wspólny obszar w obu zestawów danych

=Lookup(value in dataset1,value in dataset2, common field in both datasets, dataset name from which we need to get data) 
Powiązane problemy