Может кто-нибудь сказать, что мне не хватает в этой формуле в SSRS? Или еще лучше, может кто-нибудь написать эту же вещь в синтаксисе NESTED IIF?
Switch(
(Parameters!StartMonth.Value <= 1 And Parameters!EndMonth.Value >= 1),
(Code.CalculateFraction(
(Fields!retail1.Value -Fields!cost1.Value) , Fields!cost1.Value
) *100
),
(Parameters!StartMonth.Value <= 2 And Parameters!EndMonth.Value >= 2),
(Code.CalculateFraction(
(
(Fields!retail1.Value +Fields!retail2.Value)-
(Fields!cost1.Value + Fields!cost2.Value)
) ,
(Fields!cost1.Value + Fields!cost2.Value)
) *100
)
)
Это серьезно сводит меня с ума. Для простоты я только что поместил 2 итерации здесь. У меня их 12, и на каждом следующем шаге я должен подвести итоги retail1 до retail12 и cost1 до cost12.
Во-первых, я не могу понять это правильно.
РЕДАКТИРОВАТЬ:
Я пытаюсь сделать это сейчас и по-прежнему возвращает значение в первом условии
=iif(
Parameters!StartMonth.Value <= 1 AND Parameters!EndMonth.Value >= 1,
ReportItems!txtTotal2.Value,
iif(
Parameters!StartMonth.Value <= 2 AND Parameters!EndMonth.Value >= 2,
ReportItems!txtTotal3.Value,
iif(
Parameters!StartMonth.Value <= 3 AND Parameters!EndMonth.Value >= 3,
ReportItems!txtTotal4.Value,
Nothing
)
)
)
РЕДАКТИРОВАТЬ 2:
выяснил, что было неверно.
Вся моя логика была неверной, чтобы получить результат, который я ожидал. В моем случае было очевидно, что, что бы я ни использовал, будь то IIF или переключатель, только первый оператор будет выполнен, потому что это правда.
Но мне пришлось изменить логику, чтобы получить желаемый результат.
iif(
Parameters!EndMonth.Value = 1,
ReportItems!txtTotal1.Value,
Parameters!EndMonth.Value = 2,
ReportItems!txtTotal2.Value,
and so on
)
Это решило мою проблему. Спасибо, ребята, я ценю это.