Как мне отформатировать строку в рамках промежуточного итога в matrix?

#reporting-services #matrix

#службы отчетов #матрица

Вопрос:

У меня есть набор данных, который мне нужно представить в виде матрицы. В наборе данных я собираю отдельные итоги для CDN в течение недели вместе с общим итогом для всех CDN в течение недели. Я делаю это, чтобы упростить вычисление еженедельных процентов в отчете.

Я использую Visual Studio 2005 для построения отчета. Вы можете увидеть определение матрицы на листе 2.

Все работает нормально, пока я не доберусь до нижнего итога. Как вы можете видеть на листе 3, предложенная сумма верна, но% к итогу неверно. На самом деле, мне даже не нужно, чтобы эта строка была видна в разделе Итогов. Как я могу скрыть эту строку?

Ответ №1:

Вот два возможных способа скрыть строки или значения строк в разделе промежуточных итогов отчетов SSRS. В приведенных ниже примерах используется SSRS 2005 .

A. Первый вариант — установить Initial Visibility выражение в ячейках, чтобы скрыть строки. Ячейка метки итогов будет занимать две строки, что может выглядеть не очень хорошо. Смотрите скриншот # 1.

B. Второй вариант — отобразить данные в ячейках на основе области видимости. Это не скроет строку, но и не покажет никаких данных. Смотрите скриншот # 7.

В следующих разделах объясняется, как можно реализовать каждый из вышеперечисленных вариантов.

Используя опцию A:

  1. Щелкните правой кнопкой мыши ячейку, содержащую выражение Phonenumber и CDN source , и выберите Редактировать группу … как показано на скриншоте № 2.

  2. Обратите внимание на название. Здесь в этом примере используется название PhoneNumber . Нажмите OK или Cancel . Смотрите скриншот # 3.

  3. Щелкните правой кнопкой мыши на ячейке, содержащей текст, % to Total и выберите Properties , как показано на скриншоте № 4.

  4. В Textbox Properties диалоговом окне перейдите на Visibility вкладку и выберите Expression переключатель. В выражении введите значение =Not(InScope("PhoneNumber")) . Смотрите скриншот # 5.

  5. Щелкните правой кнопкой мыши на ячейке, содержащей выражение, чтобы вычислить значение% к итогу, и выберите, Properties как показано на скриншоте №6. Повторите шаг 6 также для этой ячейки.

Используя опцию B:

  1. Выполните шаги 1 и 2, упомянутые в предыдущем варианте A.

  2. Щелкните правой кнопкой мыши на ячейке, содержащей текст, % to Total и выберите Expression , как показано на скриншоте № 8.

  3. Измените выражение на =IIf(InScope("PhoneNumber"), "% to Total", Nothing)

  4. Щелкните правой кнопкой мыши на ячейке, содержащей выражение, чтобы вычислить значение% к итогу, и выберите, Expression как показано на скриншоте №9.

  5. Измените выражение на =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)

  6. Убедитесь, что вы изменили выражения в соответствии с вашими требованиями.

Вывод опции A можно увидеть на скриншоте № 1, а вывод опции B можно увидеть на скриншоте № 7.

Надеюсь, это поможет.

Скриншот # 1:

1

Скриншот # 2:

2

Скриншот # 3:

3

Скриншот # 4:

4

Скриншот # 5:

5

Скриншот # 6:

6

Скриншот # 7:

7

Скриншот # 8:

8

Скриншот # 9:

9

Комментарии:

1. ВАУ! Спасибо за очень подробный ответ. Я знал, что должен быть способ сделать это с помощью InScope, но я просто не мог понять логику.

Ответ №2:

Я смог найти другой способ сделать это. Из-за того, как настроены мои данные, значение WkTotOff.Value в разделе промежуточный итог всегда будет зависеть от количества имеющихся значений CDN_Values. Следовательно, я мог бы поместить =iif(Сумма(полей!WkTotOff.Value)/countDistinct(Поля!CDN_Val.Value) = Sum (Поля!Предлагается.Значение), «Серебристый», «Белый») в цвете фона в свойствах строки, которую я хочу скрыть (в разделе сведений). Поскольку индивидуальный уровень детализации никогда не будет соответствовать этим критериям, они останутся видимыми.

Это кажется немного неаккуратным, но это все, что я смог выяснить. Я также попробую ваши методы.

PK