Создание 2 связанных наборов данных, первый для содержимого отчета, а второй для списка меток его столбцов.
Набор данных содержимого отчета должен иметь фиксированное количество столбцов и имя. Вы можете выделить максимальное количество столбцов.
В этом примере у меня есть первые 2 столбца как фиксированные или всегда видимые, и максимум 4 столбца, которые должны отображаться по выбору через многозначный параметр или зависит от условий запроса. И, как обычно, мы можем иметь общее количество. Итак, это может выглядеть так:
Fixed01, Fixed02, Dyna01, Dyna02, Dyna03, Dyna04, Total
Второй набор данных со своими значениями будет выглядеть так:
Name Label
---- -----
Dyna01 Label01
Dyna02 Label02
Dyna03 Label03
Я опустил 4-ю метку, чтобы продемонстрировать, что не все столбцы используются определенным условием запроса. Помните, что оба набора данных должны быть связаны с одним и тем же запросом.
Теперь создайте параметр с именем, скажем, @columns; заполните его Доступные значения и Значения по умолчанию вторым набором данных.
Для каждого из этих 4 динамических столбцов установите видимость столбца с помощью следующего выражения:
=IIf(InStr(join(Parameters!columns.Value,","),"Dyna01"),false,true)
И для каждого из их текстовых полей заголовка столбца используйте следующее выражение:
=Lookup("Dyna01", Fields!Name.Value, Fields!Label.Value, "dsColumns")
Что касается итога, вот выражение для его видимости:
= IIf(InStr(join(Parameters!columns.Value, ","), "Dyna01"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna02"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna03"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna04"), false, true)
А вот для его значений:
= IIf(InStr(join(Parameters!columns.Value, ","), "Dyna01"), Fields!C01.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna02"), Fields!C02.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna03"), Fields!C03.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna04"), Fields!C04.Value, 0)
Это все, надеюсь, это поможет.
Бонус, второй набор данных, dsColumns
, также может содержать другие атрибуты столбца, такие как: цвет, ширина, шрифты и т. Д.