2012-06-21 2 views
3

SO Postизменение цвета заливки бара в SSRS диаграмма

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

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

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

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

Я попытался это, но она erroring:

=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") 

Ok вышеприведенные работает, но нижеследующее основано на помощи Доминика Гуле, и очень легко следовать и приятно и расширяемо до большего количества цветов; это решение для 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") 
+0

Ваш последний переключатель неправильный. 12 приведет к «Золоту», где он должен быть «Серый». Вы должны использовать (Fields! Rank.Value Mod 3 = 0), (Fields! Rank.Value Mod 3 = 1) и (Fields! Rank.Value Mod 3 = 2) условия. –

ответ

5

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

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

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

+0

+1 Переключатель, если хорошее спасибо – whytheq

+0

думаю, что у меня была лучшая идея - ранжировать страны (или какое бы то ни было измерение в отчете) и добавить ранг в данные - тогда посмотрим, делится ли число на два, и если да, это один цвет - в противном случае второй цвет. – whytheq

+0

Это называется «чередующимися цветами». Это допустимая техника, в основном используемая в таблицах для получения чередующихся цветов строк. –

1

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

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 

На вариант Заливка «серии Свойства-> Pick цвет-> Color выбрать FX поместить этот код

=Code.Color(rownumber(nothing)) 

каждый бар будет иметь цвет

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

Смежные вопросы