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


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.