Как записать эту формулу Crystal Report в виде выражения SSRS?

Я хочу преобразовать эту формулу Crystal в выражение SSRS:

Формула:

 numberVar iDay := ToNumber(Right(Cstr({@PrntStartDate}), 2)) + 9;
    select iDay
     case 1 : {wk_TORIO0430_b.AcquisitionAmnt1}
     case 2 : {wk_TORIO0430_b.AcquisitionAmnt2}
     case 3 : {wk_TORIO0430_b.AcquisitionAmnt3}
     case 4 : {wk_TORIO0430_b.AcquisitionAmnt4}
     case 5 : {wk_TORIO0430_b.AcquisitionAmnt5}

Как я могу написать это в выражении SSRS?


person Rahul Shukla    schedule 05.03.2019    source источник
comment
На какой части конверсии вы застряли? Можем ли мы увидеть вашу работу?   -  person halfer    schedule 05.03.2019
comment
@halfer Спасибо за исправление моей ошибки Сэр, я новичок в потоке StackOver, в следующий раз я буду помнить о руководстве   -  person Rahul Shukla    schedule 05.03.2019
comment
@halfer Сэр, мне нужно преобразовать эту формулу Crystal Report, есть 43 формулы, такие как выше, и мне нужно их преобразовать, поэтому, пожалуйста, я прошу вас, если вы что-то знаете об этом, пожалуйста, помогите мне.   -  person Rahul Shukla    schedule 05.03.2019
comment
У вас уже есть параметр SSRS для замены {@PrntStartDate}? Вы концептуально знаете, что делает это выражение? Эквивалент select case в SSRS - switch. Я думаю, что эквивалент ToNumber это CInt   -  person Nick.McDermaid    schedule 05.03.2019
comment
Как может iDay когда-либо быть 1-5, если вы добавляете 9 к (очевидно) дню месяца?   -  person Hannover Fist    schedule 05.03.2019


Ответы (1)


Не совсем уверен, что делает первая строка этого, поскольку я сам не использую Crystal Reports, но, как сказал Ник в комментариях, select case можно переписать с помощью оператора switch. Возможным решением для исправления первой строки было бы добавить аналогичный оператор к вычисляемому полю и использовать это поле в переключателе. Вам нужно будет выяснить логику, используемую для строки numberVar iDay, чтобы вы могли вставить ее так, как должно быть.

=SWITCH(Fields!iDay.Value = 1, wk_TORIO0430_b.AcquisitionAmnt1,
        Fields!iDay.Value = 2, wk_TORIO0430_b.AcquisitionAmnt2,
        Fields!iDay.Value = 3, wk_TORIO0430_b.AcquisitionAmnt3,
        Fields!iDay.Value = 4, wk_TORIO0430_b.AcquisitionAmnt4,
        Fields!iDay.Value = 5, wk_TORIO0430_b.AcquisitionAmnt5)
person Steve-o169    schedule 05.03.2019
comment
Я думаю, что iDay - это временная переменная, а не поле. Fields!iDay.Value следует заменить на VAL(Right(Cstr(Parameters!PrntStartDate.value), 2)) + 9. - person Hannover Fist; 05.03.2019
comment
Я не смог расшифровать эту первую строку, поэтому просто ответил на логику переключателя. Он должен придумать, как установить iDay на 1-5. Если он ответит и пояснит эту строку, я соответствующим образом обновлю свой ответ. - person Steve-o169; 06.03.2019
comment
@HannoverFist Спасибо за предоставленное решение, сэр, но это не сработало, я попытался заменить numberVar iDay: = ToNumber (Right (Cstr ({@ PrntStartDate}), 2)) + 9; over VAL (Right (Cstr (Parameters! PrntStartDate.value), 2)) + 9 this Но я не могу понять, как сделать все это выражение, пожалуйста, помогите мне. - person Rahul Shukla; 06.03.2019
comment
@ Steve-o169 Как я писал выше, iDay - это переменная, а не параметр или поле, это переменная, и я не могу сделать это выражение SSRS, пожалуйста, помогите мне. - person Rahul Shukla; 06.03.2019