Wyświetl parametr (wiele wartości) w raporcie

81

Czy ktoś może mi powiedzieć, jak wyświetlić wszystkie wybrane wartości mojego parametru wielowartościowego w raporcie SSRS. Podając parameter.valueopcję daje błąd.

Jakub Hampl
źródło
1
Oto sposób, aby to zrobić za pomocą funkcji JOIN, jako część większego bloga o parametrach wielowartościowych: wiseowl.co.uk/blog/s187/multivalue-report-builder.htm .
Andy Brown

Odpowiedzi:

155

Możesz użyć funkcji „Join”, aby utworzyć pojedynczy ciąg z tablicy etykiet, na przykład:

=Join(Parameters!Product.Label, ",")
Matt Hamilton
źródło
Jeśli dodaje wyrażenie złączenia do nagłówka, spowodowałoby to powiększenie się wyników w treści raportu.
mirezus
Dziękuję za udzielenie świetnej odpowiedzi, zanim będę musiał wyrywać włosy podczas wyszukiwania w Google!
Pulsehead
3
lub=Join(Parameters!Product.Value, ",")
Doug_Ivison
Co się stanie, jeśli w każdym produkcie są podziały stron? Czy można wyświetlić jeden produkt na stronie?
Pepys
12

= Dołącz (Parametry! Product.Label, vbcrfl) dla nowej linii


źródło
1
@nadiObi: Zamiast tego powinno być vbCrLf .
stomia
6

Nie wiedziałem o funkcji łączenia - Świetnie! Napisałem funkcję, którą umieściłem w sekcji kodu (właściwości raportu-> zakładka kod:

Public Function ShowParmValues(ByVal parm as Parameter) as string
   Dim s as String 

      For i as integer = 0 to parm.Count-1
         s &= CStr(parm.value(i)) & IIF( i < parm.Count-1, ", ","")
      Next
  Return s
End Function  
Booji Boy
źródło
+1 Działa to w nagłówku raportu, gdzie rozwiązanie „Dołącz” wymaga tabeli (której nie można przejść do nagłówka raportu).
Jeff,
0

Mam nadzieję, że ktoś inny uzna to za przydatne:

Korzystanie z Join to najlepszy sposób na użycie parametru o wielu wartościach. Ale co, jeśli chcesz mieć wydajną opcję „Wybierz wszystko”? Jeśli jest ponad 100, zapytanie będzie bardzo nieefektywne.

Aby rozwiązać ten problem, zamiast używać zapytania SQL w obecnej postaci, zmień je na użycie wyrażenia (kliknij przycisk Fx w prawym górnym rogu), a następnie utwórz zapytanie mniej więcej w ten sposób (znaki mowy są konieczne):

= "Select * from tProducts Where 1 = 1 " 
IIF(Parameters!ProductID.Value(0)=-1,Nothing," And ProductID In (" & Join(Parameters!ProductID.Value,"','") & ")")

W parametrze wykonaj następujące czynności:

    SELECT -1 As ProductID, 'All' as ProductName Union All
    Select  
    tProducts.ProductID,tProducts.ProductName
    FROM
    tProducts

Budowanie zapytania jako wyrażenia oznacza, że ​​możesz zwiększyć wydajność instrukcji SQL, ale także poradzić sobie z trudnościami, jakie SQL Server ma z obsługą wartości w instrukcji „In”.

Markive
źródło