Коммутатору SSRS с And Expression нужна помощь, второе условие неверно

Мне нужна помощь по Expression ниже, я

column A - Date, 

Column B-  Yes/No , 

Column C - Date.

Условие

Если Column B = Да и Column A имеет дату, текстовое поле будет выделено *серым цветом.

Если у Column A нет даты, проверьте, есть ли у Column C дата

затем, если Column C дата > Today и Column B = нет текстового поля Зеленый

Если Column C дата ‹ Today и Column B = нет текстового поля красный

Также, если ни в одном из столбцов нет записей, тогда Нет цвета,

Я попытался поставить ISNOTHING (для всех 3 столбцов) с оператором And перед оператором switch


person user2086122    schedule 18.12.2015    source источник
comment
Я заметил, что вы отредактировали свой вопрос, и поэтому я также обновил свой ответ. Не могли бы вы попробовать с моим ответом? Надеюсь, это будет полезно для вас   -  person pedram    schedule 18.12.2015
comment
Я попробовал это, так как столбец B является значением флажка и возвращает бит 0/1, поэтому я просто изменил = 1 вместо да или нет. Но ситуация такова, когда у меня нет даты в столбце A или столбце C, а столбец B не отмечен, также дата столбца C должна изменить цвет на основе даты Сегодня, а столбец b должен быть снят.   -  person user2086122    schedule 18.12.2015


Ответы (2)


Добавьте свои условия в виде выражения в свойство font/color нужной ячейки.

=SWITCH(
    Fields![Column B].Value = "Yes" AND IsNothing(Fields![Column A].Value), "White",
    IsNothing(Fields![Column A].Value) and Fields![Column C].Value > Today() and Fields![Column B].Value = "", "Red",
    Fields![Column C].Value > Today() and Fields![Column B].Value = "Yes", "Gray",
    Fields![Column C].Value < Today(), "Green"
    )
person Shep    schedule 18.12.2015

Прежде всего, это не может быть то же самое, что я предлагаю вам, но вы должны попробовать это,

=
SWITCH
(
    CStr(Fields!ColumnB.Value) = "Yes" AND NOT(IsNothing(CDate(Fields!ColumnA.Value))), "Grey",
    IIF(IsNothing(Fields!ColumnA.Value),IIF(NOT(IsNothing(Fields!ColumnC.Value)),IIF(CDate(Fields!ColumnC.Value) > Today() AND Fields!ColumnB.Value="","")),"Green")
    CDate(Fields!ColumnC.Value) > Today() AND Fields!ColumnB.Value="Yes","Red"
    IsNothing(Fields!ColumnA.Value) AND IsNothing(Fields!ColumnB.Value) AND IsNothing(Fields!ColumnC.Value), ""
)

Кроме того, если вышеуказанное не работает, попробуйте использовать отдельные операторы IIF. Было бы проще.

person pedram    schedule 18.12.2015
comment
Я попробовал это, так как столбец B является значением флажка и возвращает бит 0/1, поэтому я просто изменил = 1 вместо да или нет. Но ситуация такова, когда у меня нет даты в столбце A или столбце C, а столбец B не отмечен, также дата столбца C должна изменить цвет на основе даты Сегодня, а столбец b должен быть снят. - person user2086122; 18.12.2015
comment
извините, я вас не понимаю, вы упомянули в комментарии выше, что But the situation is when i don't have a date in column A or column C and Column B is unchecked - так в этом случае какой должен быть цвет? можно пожалуйста поподробней... - person pedram; 18.12.2015
comment
У меня есть следующие случаи: если столбец A, столбец B и столбец c не имеют значения - нет цвета, если в столбце A есть дата и если столбец B отмечен = серый цвет, если столбец A не имеет значения, мы проверяем, есть ли дата в столбце C, если есть дата, мы проверяем, является ли эта дата › Today = Green, если дата столбца c ‹ Today = Red, поэтому, когда мы проверяем столбец C, столбец B должен быть снят. - person user2086122; 18.12.2015