#reporting-services #matrix
#службы отчетов #матрица
Вопрос:
У меня есть набор данных, который мне нужно представить в виде матрицы. В наборе данных я собираю отдельные итоги для CDN в течение недели вместе с общим итогом для всех CDN в течение недели. Я делаю это, чтобы упростить вычисление еженедельных процентов в отчете.
Я использую Visual Studio 2005 для построения отчета. Вы можете увидеть определение матрицы на листе 2.
Все работает нормально, пока я не доберусь до нижнего итога. Как вы можете видеть на листе 3, предложенная сумма верна, но% к итогу неверно. На самом деле, мне даже не нужно, чтобы эта строка была видна в разделе Итогов. Как я могу скрыть эту строку?
Ответ №1:
Вот два возможных способа скрыть строки или значения строк в разделе промежуточных итогов отчетов SSRS. В приведенных ниже примерах используется SSRS 2005
.
A. Первый вариант — установить Initial Visibility
выражение в ячейках, чтобы скрыть строки. Ячейка метки итогов будет занимать две строки, что может выглядеть не очень хорошо. Смотрите скриншот # 1.
B. Второй вариант — отобразить данные в ячейках на основе области видимости. Это не скроет строку, но и не покажет никаких данных. Смотрите скриншот # 7.
В следующих разделах объясняется, как можно реализовать каждый из вышеперечисленных вариантов.
Используя опцию A:
-
Щелкните правой кнопкой мыши ячейку, содержащую выражение
Phonenumber
иCDN source
, и выберите Редактировать группу … как показано на скриншоте № 2. -
Обратите внимание на название. Здесь в этом примере используется название
PhoneNumber
. НажмитеOK
илиCancel
. Смотрите скриншот # 3. -
Щелкните правой кнопкой мыши на ячейке, содержащей текст,
% to Total
и выберитеProperties
, как показано на скриншоте № 4. -
В
Textbox Properties
диалоговом окне перейдите наVisibility
вкладку и выберитеExpression
переключатель. В выражении введите значение=Not(InScope("PhoneNumber"))
. Смотрите скриншот # 5. -
Щелкните правой кнопкой мыши на ячейке, содержащей выражение, чтобы вычислить значение% к итогу, и выберите,
Properties
как показано на скриншоте №6. Повторите шаг 6 также для этой ячейки.
Используя опцию B:
-
Выполните шаги 1 и 2, упомянутые в предыдущем варианте A.
-
Щелкните правой кнопкой мыши на ячейке, содержащей текст,
% to Total
и выберитеExpression
, как показано на скриншоте № 8. -
Измените выражение на
=IIf(InScope("PhoneNumber"), "% to Total", Nothing)
-
Щелкните правой кнопкой мыши на ячейке, содержащей выражение, чтобы вычислить значение% к итогу, и выберите,
Expression
как показано на скриншоте №9. -
Измените выражение на
=IIf(InScope("PhoneNumber"), Round((IIf(Sum(Fields!Offered.Value) = 0 Or Sum(Fields!WeekTotal.Value) = 0, 0, Sum(Fields!Offered.Value)/Sum(Fields!WeekTotal.Value))) * 100, 1).ToString() " %", Nothing)
-
Убедитесь, что вы изменили выражения в соответствии с вашими требованиями.
Вывод опции A можно увидеть на скриншоте № 1, а вывод опции B можно увидеть на скриншоте № 7.
Надеюсь, это поможет.
Скриншот # 1:
Скриншот # 2:
Скриншот # 3:
Скриншот # 4:
Скриншот # 5:
Скриншот # 6:
Скриншот # 7:
Скриншот # 8:
Скриншот # 9:
Комментарии:
1. ВАУ! Спасибо за очень подробный ответ. Я знал, что должен быть способ сделать это с помощью InScope, но я просто не мог понять логику.
Ответ №2:
Я смог найти другой способ сделать это. Из-за того, как настроены мои данные, значение WkTotOff.Value в разделе промежуточный итог всегда будет зависеть от количества имеющихся значений CDN_Values. Следовательно, я мог бы поместить =iif(Сумма(полей!WkTotOff.Value)/countDistinct(Поля!CDN_Val.Value) = Sum (Поля!Предлагается.Значение), «Серебристый», «Белый») в цвете фона в свойствах строки, которую я хочу скрыть (в разделе сведений). Поскольку индивидуальный уровень детализации никогда не будет соответствовать этим критериям, они останутся видимыми.
Это кажется немного неаккуратным, но это все, что я смог выяснить. Я также попробую ваши методы.
PK