Может кто-нибудь, пожалуйста, скажите мне, что мне не хватает в этой формуле в SSRS? Или еще лучше, может кто-нибудь, пожалуйста, написать эту же вещь в синтаксисе NESTED IIF?Правильный синтаксис вложенного IIF или SWITCH корректно
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 из них, и каждый следующий шаг я должен подвести итоги розничной торговли1 до retail12 и стоить1 до стоимости12.
Я не могу получить это право для этих двух в первую очередь.
EDIT:
Я пытаюсь это и до сих пор возвращает значение в первом состоянии
=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
)
)
)
EDIT 2:
выяснял ЧТО БЫЛО НЕПРАВИЛЬНО.
Вся моя логика была неправильной, чтобы добраться до результата, которого я ожидал. В моем случае было очевидно, что независимо от того, что я использую, будь то IIF или коммутатор, только первый оператор будет выполняться, потому что это правда.
Но мне пришлось изменить логику, чтобы получить результат, который я хотел.
iif(
Parameters!EndMonth.Value = 1,
ReportItems!txtTotal1.Value,
Parameters!EndMonth.Value = 2,
ReportItems!txtTotal2.Value,
and so on
)
Это решило мою проблему. Спасибо, ребята, я это ценю.
Вы получаете сообщение об ошибке, или просто неправильные результаты? –