изменение цвета заливки бара на диаграмме ssrs

SO Post

Сейчас у меня на графике RS 5 баров - в будущем может быть 7 баров, 17 баров или 27 баров!

С парой тактов у меня может быть такое выражение:

=iif(Fields!Market.Value = "Spain"
,"Gold"
,iif (Fields!Market.Value = "Denmark"
    , "Gray"
    , iif(Fields!Market.Value = "Italy"
        , "Blue"
        , "Purple"
        )
    )
)

Если я не могу предсказать, сколько стран будет включено + мне не нужно жестко кодировать «Зеленый», «Красный» и т. д., как мне изменить выражение?

Я пробовал это, но это ошибка:

=Switch(Mod(Fields!Rank.Value/CDbl(2))=CDbl(0), "Gold", 
   Mod(Fields!Rank.Value/CDbl(3))=CDbl(0), "Gray", 
   Mod(Fields!Rank.Value/CDbl(2))>CDbl(0) "Blue")

Выше приведен совершенно неверный синтаксис: Это работает:

=Switch(CDbl(Fields!Rank.Value Mod 2)=CDbl(0), "Gold", 
   CDbl(Fields!Rank.Value Mod 3)=CDbl(0), "Gray", 
   CDbl(Fields!Rank.Value Mod 2)>CDbl(0), "Blue")

Хорошо - приведенный выше код работает (не уверен, как!), но приведенный ниже основан на помощи Доминика Гуле, и за ним действительно легко следить, он хорош и расширяем до большего количества цветов; это решение для 5 цветов:

=Switch(CDbl(Fields!Rank.Value Mod 5)=CDbl(0), "Gold", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(1), "Gray", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(2), "Green", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(3), "Red", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(4), "Pink")

person whytheq    schedule 21.06.2012    source источник
comment
Ваш последний переключатель не подходит. 12 приведет к золоту, а должно быть серому. Вы должны использовать условия (Fields!Rank.Value Mod 3 = 0), (Fields!Rank.Value Mod 3 = 1) и (Fields!Rank.Value Mod 3 = 2).   -  person Dominic Goulet    schedule 21.06.2012


Ответы (2)


Прежде всего, вместо того, чтобы использовать много «IIF», вы должны использовать «Switch», так он проще.

Switch(Fields!Market.Value = "Spain", "Gold",
       Fields!Market.Value = "Denmark", "Gray",
       Fields!Market.Value = "Italy", "Blue")

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

person Dominic Goulet    schedule 21.06.2012
comment
думаю, у меня была идея получше - ранжировать страны (или любое другое измерение в отчете) и добавить ранг в данные - затем посмотреть, делится ли число на два, и если да, то дать ему один цвет - в противном случае второй цвет . - person whytheq; 21.06.2012
comment
Это называется чередованием цветов. Это действующий метод, в основном используемый в таблицах для получения чередующихся цветов строк. - person Dominic Goulet; 21.06.2012
comment
я только что добавил свою попытку в OP ... вы видите, что с ней не так: я надеюсь получить 3 чередующихся цвета - person whytheq; 21.06.2012
comment
У меня похожая проблема, но моя проблема в том, что я не знаю, какие значения я получу... Я получу целые числа, но мне нужно установить цвет для каждого целого числа, которое я получаю... вы можете мне помочь? - person Renascent; 27.07.2018

Лучше было бы создать функцию. Для этого перейдите в «Свойства отчета», выберите код и введите этот пример:

Public Function Color(ByVal Index as Integer) as String

Select Case Index
Case = 1        
    return "#a6cee3"    
Case = 2        
    return "#1f78b4"    
Case = 3        
    return "#b2df8a"    
Case = 4        
    return "#33a02c"    
Case = 5        
    return "#fb9a99"    
Case = 6        
    return "#e31a1c"    
Case = 7        
    return "#fdbf6f"    
Case = 8        
    return "#ff7f00"    
Case = 9        
    return "#cab2d6"    
Case = 10       
    return "#6a3d9a"    

End Select

End Function

В опции «Заливка» в «Свойствах серии» -> «Выбрать цвет» -> «Цвет» выберите fx, поместите этот код

=Code.Color(rownumber(nothing))

Каждая полоса будет иметь цвет.

Для цветов HEX я взял с веб-сайта: http://colorbrewer2.org/#type=qualitative&scheme=Paired&n=10 Он показывает лучшие цвета, которые сочетаются друг с другом, поэтому вам не нужно об этом думать. И вы можете добавить столько цветов, сколько хотите

person Jair Morais    schedule 25.07.2017