Скрытые группы динамических матриц все еще занимают место в SSRS 2005 - PullRequest
1 голос
/ 13 октября 2010

Проблема

Я использую динамические группы матриц, как в Динамическая группировка из Веб-журнал Sleazy Hacks Reporting Services Криса Хейса (который, кстати, имеет кое-что интересное и стоит проверить). Мои группы строк и столбцов привязаны к двум многозначным параметрам, и все работает отлично, кроме одной вещи. Несмотря на то, что я запрещаю показ неиспользуемых групп, они все еще занимают место.

Вот как теперь выглядит отчет, когда я выбираю только одну группу строк и одну группу столбцов:

What the matrix looks like now, with extra space Обратите внимание, что даже если нежелательные группы имеют скрытое свойство True (как установлено выражением), они все еще занимают место. Вот как я хотел бы, чтобы это выглядело (я вырезал пустые области из картинки вручную):

How I'd like the matrix to look

Вопрос

У кого-нибудь есть идеи, как уменьшить пустые области, когда соответствующие группы матриц скрыты?

Только для любопытных (не является частью вопроса)

Для справки, вот как выглядит матрица в режиме Layout:

Layout view of the matrix

И если кто-то еще захочет создавать динамические группы матриц, вот этот раздел кода, который выполняет тяжелую работу:

Public Function ValueIsInMultiParameter(MultiParameter As Parameter, Value As String) As Boolean
   Dim i as Long
   For i = 0 to MultiParameter.Count - 1
      If MultiParameter.Value(i) = Value Then Return True
   Next
   Return False
End Function

Public Function DynamicFieldValue(CurrentFields As Fields, MultiParameter As Parameter, Index As Long) As Object
   If ParameterCount(MultiParameter) - 1 < Index Then Return ""
   Return CurrentFields(MultiParameter.Value(Index)).Value
End Function

Public Function DynamicFieldFormattedValue(CurrentFields As Fields, MultiParameter As Parameter, Index As Long) As Object
   If ParameterCount(MultiParameter) - 1 < Index Then Return ""
   Return CustomFormat(CurrentFields(MultiParameter.Value(Index)).Value, MultiParameter.Value(Index))
End Function

Public Function DynamicGrouping(MultiParameter As Parameter, Index As Long) As Object
   If ParameterCount(MultiParameter) - 1 < Index Then Return "None"
   Return MultiParameter.Value(Index)
End Function

Public Function DynamicGroupingLabel(CurrentFields As Fields, MultiParameter As Parameter, Index As Long) As String
   If Index = 0 Then Return "Grand Total"
   If ParameterCount(MultiParameter) - 1 < Index Then Return ""
   Return CustomFormat(CurrentFields(MultiParameter.Value(Index - 1)).Value, MultiParameter.Value(Index - 1)) & " Total"
End Function

Public Function CustomFormat(Value As Object, ValueType As String) As String
   Select Case ValueType
      Case "DayOf"
         Return Format(Value, "M/d/yyyy")
      Case "WeekOf"
         Return Format(Value, "M/d/yyyy")
      Case "WeekDayPart"
         Return WeekdayName(Value)
      Case "MonthOf"
         Return Format(Value, "MMM yyyy")
      Case "MonthDayPart"
         Return "Day " & Value
      Case "MonthWeekPart"
         Return "Week " & Value
      Case "YearOf"
          Return Format(Value, "yyyy")
      Case "YearDayPart"
          Return "Day " & Value
      Case "YearWeekPart"
          Return "Week " & Value
      Case "YearMonthPart"
          Return MonthName(Value)
      Case "YearPart"
         Return Value
      Case Else
         Return Value
   End Select
End Function

Public Function ParameterCount(MultiParameter As Parameter) As Long
   If MultiParameter.Count = 0 OrElse MultiParameter.Value(0) = "1" Then Return 0
   Return MultiParameter.Count
End Function

В параметрах я поместил жестко запрограммированный список выбираемых опций группировки, например, параметр RowGroups имеет доступные значения:

Label   Value
-----   -------
Year    YearOf
Month   MonthOf
Week    WeekOf
Day     DayOf

Где Значение - это имя столбца SQL, возвращаемого DataSet.

1 Ответ

0 голосов
/ 13 октября 2010

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

Кстати, связанный блог, похоже, не обновлялся с 2006 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...