การเปลี่ยนสีเติมแถบในแผนภูมิ ssrs

โพสต์ SO

ปัจจุบันฉันมี 5 แท่งในกราฟ RS ของฉัน - ในอนาคตอาจมี 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")

โอเค - การดำเนินการข้างต้น (ไม่แน่ใจว่าเป็นอย่างไร!) แต่ด้านล่างนี้อิงจากความช่วยเหลือจาก Dominic Goulet และง่ายต่อการปฏิบัติตามและสวยงามและสามารถขยายให้มีสีต่างๆ ได้มากขึ้น นี่คือคำตอบสำหรับ 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

จะดีกว่าถ้าสร้างฟังก์ชั่น โดยไปที่ Report Properties เลือกโค้ดแล้วพิมพ์ตัวอย่างนี้:

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