mengubah warna isian batang di bagan ssrs

SO Posting

Saat ini saya punya 5 bar di RS chart saya - di masa depan mungkin ada 7 bar atau 17 bar atau 27 bar!

Dengan beberapa bar saya dapat memiliki ekspresi seperti ini:

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

Jika saya tidak dapat memperkirakan berapa banyak negara yang akan disertakan + Saya lebih suka tidak perlu membuat kode keras dalam "Hijau", "Merah", dll, bagaimana cara mengubah ekspresi?

Saya sudah mencobanya tetapi error:

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

Di atas adalah sintaks yang salah: Ini berfungsi:

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

Oke - cara di atas berjalan (tidak yakin bagaimana caranya!) tetapi cara di bawah ini didasarkan pada bantuan dari Dominic Goulet dan sangat mudah diikuti serta bagus dan dapat diperluas ke lebih banyak warna; ini adalah solusi untuk 5 warna:

=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 sumber
comment
Tombol terakhir Anda tidak tepat. 12 akan menghasilkan Emas, yang seharusnya menjadi Abu-abu. Anda harus menggunakan kondisi (Fields!Rank.Value Mod 3 = 0), (Fields!Rank.Value Mod 3 = 1) dan (Fields!Rank.Value Mod 3 = 2).   -  person Dominic Goulet    schedule 21.06.2012


Jawaban (2)


Pertama-tama, daripada menggunakan banyak "IIF", Anda harus menggunakan "Switch", karena lebih ramping.

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

Sekarang jika Anda menginginkan warna per negara, Anda harus menyimpannya di database Anda dan mengeluarkannya saat Anda membutuhkannya. Dengan begitu, suatu negara akan selalu memiliki warna yang sama pada setiap laporan yang Anda miliki.

person Dominic Goulet    schedule 21.06.2012
comment
menurut saya saya punya ide yang lebih baik - beri peringkat negara (atau dimensi apa pun yang ada dalam laporan) dan tambahkan peringkat tersebut ke dalam data - lalu lihat apakah angka tersebut habis dibagi dua dan jika demikian berikan satu warna - jika tidak, warna kedua . - person whytheq; 21.06.2012
comment
Itu disebut warna bergantian. Ini adalah teknik yang valid, sebagian besar digunakan dalam tabel untuk mendapatkan warna baris bergantian. - person Dominic Goulet; 21.06.2012
comment
Saya baru saja menambahkan upaya saya ke OP ... dapatkah Anda melihat apa yang salah dengannya: Saya berharap mendapatkan 3 warna bergantian - person whytheq; 21.06.2012
comment
Saya memiliki masalah serupa tetapi masalah saya adalah saya tidak tahu nilai apa yang akan saya dapatkan... Saya akan mendapatkan bilangan bulat tetapi saya perlu mengatur warna untuk setiap bilangan bulat yang saya dapatkan... dapatkah Anda membimbing saya? - person Renascent; 27.07.2018

Akan lebih baik untuk membuat suatu fungsi. Untuk itu, buka Report Properties, pilih kode dan ketik contoh ini:

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

Pada pilihan Fill dari "Series Properties->Pilih warna->Warna pilih fx masukkan kode ini

=Code.Color(rownumber(nothing))

Setiap batang akan memiliki warna.

Untuk warna HEX saya ambil dari website : http://colorbrewer2.org/#type=qualitative&scheme=Paired&n=10 Ini menunjukkan warna terbaik yang cocok satu sama lain, jadi Anda tidak perlu memikirkannya. Dan Anda dapat menambahkan warna sebanyak yang Anda inginkan

person Jair Morais    schedule 25.07.2017