Ответ 1
Я отвечу на свой вопрос.
Из любого выражения можно выполнять поиск во всех наборах данных. Таким образом мы получим данные:
LookupSet(SourceFieldToCompare, TargetFieldToCompare, ResultField, DataSet)
Теперь позвольте поднять планку вопроса и сказать, что данные сгруппированы в еще одно измерение, месяцы - вот так:
Category | January | February | March
A | 33% | 37% | 35%
B | 38% | 36% | 37%
C | 29% | 27% | 28%
Скажите, что набор данных, упомянутый в вопросе, называется "категориями". Теперь вызовите функцию LookupSet
(Ссылка):
LookupSet(Fields!Month.Value, Fields!Month.Value, Fields!Amount.Value, "categories")
(помните, что первый "месяц" связан с набором данных внутри таблицы, а второй "месяц" во втором аргументе - "месяц" из набора данных "категории"!)
Остается одна проблема: LookupSet возвращает типы Object
, которые Sum
не будут есть. Вам нужно использовать настраиваемый агрегат (в "Свойства отчета" добавлен специальный код): (Источник)
Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
suma = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
Next
Return suma
End Function
Теперь, вызывая Code.SumLookup
в функции LookupSet
, сумма вычисляется из всех полей.