Как исключить одно значение из суммы группировки на основе значения другого поля? - PullRequest
0 голосов
/ 09 апреля 2009

Как исключить одно значение из суммы группировки на основе значения другого поля?

то есть я открываю Отчет => Свойства отчета => Код и вставляю свой Пользовательский код, но как мне изменить приведенный ниже код, чтобы исключить числовое значение другого поля для случая ниже?

Public Function ChangeWord(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Others") Then
      strBuilder.Replace("Others", "Other NOT INCL")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

1 Ответ

4 голосов
/ 09 апреля 2009

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

Невозможно сделать это без использования второй части логики, ни функции, ни условия Iif. На данный момент у меня нет SSRS для проверки этого, но (при условии, что ваш столбец значений является целым числом, код будет выглядеть примерно так:

Public Function ExcludeOthers(rowDesc As String, rowVal as integer)
    if ChangeWord(rowDesc) = "Other NOT INCL"
        Return 0
    else
        Return rowVal
    end if
End Function

Затем в ячейке, в которой вы хотите отобразить условную сумму:

=Sum(ExcludeOthers(Fields!desc.Value,Fields!val.Value))

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

=Sum(Iif(ChangeWord(Fields!desc.Value) = "Other NOT INCL",0,Fields!desc.Value))

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

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

...