Выражение поля SSRS для изменения цвета фона ячейки

Я пытаюсь написать выражение поля для ячейки в своем отчете, где мне нужно изменить цвет фона ячейки в зависимости от строкового значения в ячейке. Пример: если в столбце указано значение «Утверждено», ячейка должна иметь зеленый цвет фона. Я пробовал следующее:

= IIF(fields!column.value = "Approved", "Green")

и

= IIF(Fields!column.Value, "Approved", "Green")

Ни то, ни другое не работает ... Я знаю, что мне что-то не хватает в синтаксисе ... Вероятно, я не ссылаюсь на зеленый цвет фона в синтаксисе. Пожалуйста помоги!


person Avinash    schedule 14.02.2011    source источник
comment
Если хоп решил вашу проблему, вы должны принять его ответ.   -  person DForck42    schedule 15.02.2011


Ответы (6)


Проблема с IIF (Fields! Column.Value = "Approved", "Green") заключается в том, что вам не хватает третьего параметра. Правильный синтаксис - IIF ([некоторое логическое выражение], [результат, если логическое выражение истинно], [результат, если логическое значение ложно])

Попробуй это

=IIF(Fields!Column.Value = "Approved", "Green", "No Color")

Вот список примеров выражений Примеры выражений в службах Reporting Services

IIF в отчете SSRS

person dustyhoppe    schedule 14.02.2011
comment
Большое спасибо за ответ .. Он решает синтаксическую часть ... но когда я просматриваю отчет, я вижу, что значение строки Approved заменено на String Value Green. и я хочу, чтобы цвет фона менялся, а не строковое значение. - person Avinash; 14.02.2011
comment
Независимо от того, используете ли вы построитель отчетов или BIDS, при нажатии кнопки просмотра свойств ячейки в окне свойств должно быть свойство Цвет фона. Вот где вы вводите свое выражение сверху. - person dustyhoppe; 14.02.2011
comment
Ах .. Это решает требование .. Большое спасибо за вашу помощь .. Очень признателен .. - person Avinash; 14.02.2011

Используйте свойства цвета и фона, чтобы написать выражения для вашего запроса. Добавьте следующее к параметру выражения для свойства цвета, которое вы хотите удовлетворить)

Пример

=iif(fields!column.value = "Approved", "Green","<other color>")

iif требуется 3 значения, первое - соответствующий столбец, второе - для обработки True, а третье - для обработки False для оператора iif.

person user2655481    schedule 06.08.2013

Вы можете использовать функцию SWITCH () для оценки нескольких критериев окраски ячейки. Узел <BackgroundColor> - это заливка ячейки, <Color> - цвет шрифта.

Выражение:

=SWITCH(
    (
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND (Fields!User_Name.Value.Contains("TOTAL"))
    ), "Black"
    ,(
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND NOT(Fields!User_Name.Value.Contains("TOTAL"))
    ), "#595959"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND Fields!OLAP_Cube.Value.Contains("TOTAL") 
    ), "#c65911"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND NOT(Fields!OLAP_Cube.Value.Contains("TOTAL")) 
    ), "#ed7d31"
    ,true, "#e7e6e6"
    )

'Daily Totals... CellFill.&[Dark Orange]-[#c65911], TextBold.&[True]'Daily Totals... CellFill.&[Dark Orange]-[#c65911], TextBold.&[True]
'Daily Cube Totals... CellFill.&[Medium Orange]-[#eb6e19]
'Daily User List... CellFill.&[Light Grey]-[#e7e6e6]
'Date Totals All Users Total... CellFill.&[Black]-["black"], TextColor.&[Light Orange]-[#ed7d31]
'Date Totals Per User... CellFill.&[Dark Grey]-[#595959], TextColor.&[Yellow]-["yellow"]
'(ALL OTHER CONDITIONS)
'Daily User List... CellFill.&[Light Grey]-[#e7e6e6]

Узел XML в файле определения отчета (SSRS-2016 / VS-2015):

                <TablixRow>
                  <Height>0.2in</Height>
                  <TablixCells>
                    <TablixCell>
                      <CellContents>
                        <Textbox Name="Usage_Date1">
                          <CanGrow>true</CanGrow>
                          <KeepTogether>true</KeepTogether>
                          <Paragraphs>
                            <Paragraph>
                              <TextRuns>
                                <TextRun>
                                  <Value>=Fields!Usage_Date.Value</Value>
                                  <Style>
                                    <FontSize>8pt</FontSize>
                                    <FontWeight>=SWITCH(
    (
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND Fields!OLAP_Cube.Value.Contains("TOTAL") 
    ), "Bold"
    ,true, "Normal"
    )</FontWeight>
                                    <Color>=SWITCH(
    (
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND (Fields!User_Name.Value.Contains("TOTAL"))
    ), "#ed7d31"
    ,(
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND NOT(Fields!User_Name.Value.Contains("TOTAL"))
    ), "Yellow"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND Fields!OLAP_Cube.Value.Contains("TOTAL") 
    ), "Black"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND NOT(Fields!OLAP_Cube.Value.Contains("TOTAL")) 
    ), "Black"
    ,true, "Black"
    )

'Daily Totals... CellFill.&amp;[Dark Orange]-[#c65911], TextBold.&amp;[True]'Daily Totals... CellFill.&amp;[Dark Orange]-[#c65911], TextBold.&amp;[True]
'Daily Cube Totals... CellFill.&amp;[Medium Orange]-[#eb6e19]
'Daily User List... CellFill.&amp;[Light Grey]-[#e7e6e6]
'Date Totals All Users Total... CellFill.&amp;[Black]-["black"], TextColor.&amp;[Light Orange]-[#ed7d31]
'Date Totals Per User... CellFill.&amp;[Dark Grey]-[#595959], TextColor.&amp;[Yellow]-["yellow"]
'(ALL OTHER CONDITIONS)
'Daily User List... CellFill.&amp;[Light Grey]-[#e7e6e6]</Color>
                                  </Style>
                                </TextRun>
                              </TextRuns>
                              <Style />
                            </Paragraph>
                          </Paragraphs>
                          <rd:DefaultName>Usage_Date1</rd:DefaultName>
                          <Style>
                            <Border>
                              <Color>LightGrey</Color>
                              <Style>Solid</Style>
                            </Border>
                            <BackgroundColor>=SWITCH(
    (
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND (Fields!User_Name.Value.Contains("TOTAL"))
    ), "Black"
    ,(
        Fields!Usage_Date.Value.Contains("TOTAL") 
        AND NOT(Fields!User_Name.Value.Contains("TOTAL"))
    ), "#595959"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND Fields!OLAP_Cube.Value.Contains("TOTAL") 
    ), "#c65911"
    ,(
        NOT(Fields!Usage_Date.Value.Contains("TOTAL")) 
        AND Fields!User_Name.Value.Contains("TOTAL") 
        AND NOT(Fields!OLAP_Cube.Value.Contains("TOTAL")) 
    ), "#ed7d31"
    ,true, "#e7e6e6"
    )

'Daily Totals... CellFill.&amp;[Dark Orange]-[#c65911], TextBold.&amp;[True]'Daily Totals... CellFill.&amp;[Dark Orange]-[#c65911], TextBold.&amp;[True]
'Daily Cube Totals... CellFill.&amp;[Medium Orange]-[#eb6e19]
'Daily User List... CellFill.&amp;[Light Grey]-[#e7e6e6]
'Date Totals All Users Total... CellFill.&amp;[Black]-["black"], TextColor.&amp;[Light Orange]-[#ed7d31]
'Date Totals Per User... CellFill.&amp;[Dark Grey]-[#595959], TextColor.&amp;[Yellow]-["yellow"]
'(ALL OTHER CONDITIONS)
'Daily User List... CellFill.&amp;[Light Grey]-[#e7e6e6]</BackgroundColor>
                            <PaddingLeft>2pt</PaddingLeft>
                            <PaddingRight>2pt</PaddingRight>
                          </Style>
                        </Textbox>
                        <rd:Selected>true</rd:Selected>
                      </CellContents>
                    </TablixCell>
person SherlockSpreadsheets    schedule 04.03.2019

=IIF(Fields!ADPAction.Value.ToString().ToUpper().Contains("FAIL"),"Red","White")

Также необходимо преобразовать в верхний регистр для сравнения - это двоичный тест.

person Tim Curtin    schedule 08.09.2016
comment
Привет, добро пожаловать в SO, приятно видеть, что вы начинаете с ответа. Код более читабелен, когда вы форматируете его как код, просто сделайте отступ в 4 пробела! - person iScrE4m; 08.09.2016

Попробуйте это: =IIF(fields!column.value =Condition,"Red","Black")

person Mohammad Shehroz    schedule 27.03.2017

Попробуйте это: =IIF(Fields!Column.Value = "Approved", "Green", "No Color")

person madhura    schedule 15.09.2020