Відобразити параметр (багатозначне) у звіті


81

Хто-небудь може сказати мені, як відобразити все вибране значення мого багатозначного параметра у звіті SSRS. При наданні parameter.valueопції це видає помилку.


1
Ось спосіб зробити це за допомогою функції JOIN, як частина великого блогу з багатозначними параметрами: wiseowl.co.uk/blog/s187/multivalue-report-builder.htm .
Andy Brown

Відповіді:


155

Ви можете використовувати функцію "Приєднання", щоб створити єдиний рядок із масиву міток, наприклад:

=Join(Parameters!Product.Label, ",")

Якщо він додає об'єднаний вираз до заголовка, це призведе до зростання результатів по тілу звіту ні?
mirezus

Дякую за чудову відповідь, перш ніж мені довелося виривати волосся під час гуглиння!
Pulsehead

3
або=Join(Parameters!Product.Value, ",")
Doug_Ivison 02

Що робити, якщо у вас є розриви сторінок для кожного товару? Чи можна відображати по одному товару на сторінці?
Pepys

12

= Приєднатися (Параметри! Product.Label, vbcrfl) до нового рядка


1
@nadiObi: Натомість це має бути vbCrLf .
stomy

6

Я не знав про функцію приєднання - приємно! Я написав функцію, яку розмістив у розділі коду (властивості звіту-> вкладка коду:

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  

+1 Це працює в заголовку звіту, де для рішення "Приєднання" потрібна таблиця (яка не може перейти в заголовок звіту).
Джефф,

0

Сподіваємось, комусь ще це знадобиться:

Використання об’єднання є найкращим способом використання багатозначного параметра. Але що, якщо ви хочете мати ефективну функцію "Вибрати все"? Якщо є 100s +, тоді запит буде дуже неефективним.

Щоб вирішити це, замість використання SQL-запиту як є, змініть його на вираз (натисніть кнопку Fx вгорі праворуч), а потім створіть свій запит приблизно так (потрібні мовні знаки):

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

У вашому Параметрі виконайте наступне:

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

Побудувавши запит як вираз, ви можете зробити оператор SQL більш ефективним, але також впоратись із труднощами, які виникає у SQL Server із обробкою значень у операторі In.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.