Bagaimana Anda menaungi baris bergantian dalam laporan Layanan Pelaporan SQL Server?
Sunting: Ada banyak jawaban bagus yang tercantum di bawah ini - dari yang cepat dan sederhana hingga yang kompleks dan komprehensif . Sayangnya, saya hanya dapat memilih satu ...
sql-server
reporting-services
formatting
Michael Haren
sumber
sumber
Jawaban:
Buka properti BackgroundColor baris tabel dan pilih "Ekspresi ..."
Gunakan ungkapan ini:
Trik ini dapat diterapkan ke banyak area laporan.
Dan di .NET 3.5+ Anda bisa menggunakan:
Tidak mencari perwakilan - saya hanya meneliti sendiri pertanyaan ini dan berpikir saya akan membagikannya.
sumber
[rsInvalidColor] The value of the BackgroundColor property for the textbox ‘active’ is “Transparent”, which is not a valid BackgroundColor.
itu sepertinya ekspresi yang benar=IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", Nothing)
. Terima kasih atas tipnya.Menggunakan IIF (RowNumber ...) dapat menyebabkan beberapa masalah ketika baris dikelompokkan dan alternatif lain adalah dengan menggunakan fungsi VBScript sederhana untuk menentukan warna.
Ini sedikit usaha tetapi ketika solusi dasar tidak cukup, itu adalah alternatif yang bagus.
Pada dasarnya, Anda menambahkan kode ke Laporan sebagai berikut ...
Kemudian pada setiap sel, atur BackgroundColor sebagai berikut:
Rincian lengkap ada di artikel Wrox ini
sumber
Saya mendapatkan efek catur ketika saya menggunakan solusi Catch22, saya pikir karena matriks saya memiliki lebih dari satu kolom dalam desain. ungkapan itu bekerja dengan baik untuk saya:
sumber
Saya telah mengubah solusi @ Catch22 Sedikit karena saya tidak suka gagasan harus pergi ke setiap bidang jika saya memutuskan saya ingin mengubah salah satu warna. Ini sangat penting dalam laporan di mana terdapat banyak bidang yang perlu diubah variabel warnanya.
Melihat bahwa saya telah mengubah fungsi dari yang menerima warna menjadi yang berisi warna yang akan digunakan.
Kemudian di setiap bidang tambahkan:
Ini jauh lebih kuat daripada secara manual mengubah warna pada warna latar belakang masing-masing bidang.
sumber
Satu hal yang saya perhatikan adalah bahwa tidak satu pun dari dua metode teratas memiliki gagasan tentang apa warna baris pertama harus dalam kelompok; grup hanya akan mulai dengan warna yang berlawanan dari baris terakhir dari grup sebelumnya. Saya ingin grup saya selalu mulai dengan warna yang sama ... baris pertama dari setiap grup harus selalu putih, dan baris berikutnya diwarnai.
Konsep dasarnya adalah mengatur ulang sakelar ketika setiap grup dimulai, jadi saya menambahkan sedikit kode:
Jadi saya memiliki tiga jenis latar belakang sel sekarang:
Ini bekerja untuk saya. Jika Anda ingin baris pengelompokan menjadi tidak berwarna, atau warna yang berbeda, harus cukup jelas dari ini cara mengubahnya.
Jangan ragu untuk menambahkan komentar tentang apa yang bisa dilakukan untuk meningkatkan kode ini: Saya baru untuk SSRS dan VB, jadi saya sangat curiga bahwa ada banyak ruang untuk perbaikan, tetapi ide dasarnya tampak bagus (dan itu berguna untuk saya) jadi saya ingin membuangnya di sini.
sumber
untuk header / footer grup:
Anda juga dapat menggunakan ini untuk "mengatur ulang" jumlah warna baris dalam setiap grup. Saya ingin baris detail pertama di setiap sub grup dimulai dengan White dan solusi ini (bila digunakan pada baris detail) memungkinkan hal itu terjadi:
Lihat: http://msdn.microsoft.com/en-us/library/ms159136(v=sql.100).aspx
sumber
Solusi Michael Haren bekerja dengan baik untuk saya. Namun saya mendapat peringatan yang mengatakan bahwa "Transparan" bukan BackgroundColor yang valid saat Pratinjau. Menemukan perbaikan cepat dari Mengatur BackgroundColor elemen Laporan di SSRS . Gunakan Tidak Ada alih-alih "Transparan"
sumber
Satu-satunya cara efektif untuk menyelesaikan masalah ini tanpa menggunakan VB adalah "menyimpan" nilai modulo pengelompokan baris dalam pengelompokan baris (dan di luar pengelompokan kolom) dan rujuk secara eksplisit dalam pengelompokan kolom Anda. Saya menemukan solusi ini di
http://ankeet1.blogspot.com/2009/02/alternating-row-background-color-for.html
Tetapi Ankeet bukan pekerjaan terbaik untuk menjelaskan apa yang terjadi, dan solusinya merekomendasikan langkah yang tidak perlu untuk membuat pengelompokan pada nilai konstan, jadi inilah proses langkah-demi-langkah saya untuk sebuah matriks dengan grup baris tunggal RowGroup1:
Setel nilai kotak teks RowGroupColor ke
=iif(RunningValue(Fields![RowGroupField].Value ,CountDistinct,Nothing) Mod 2, "LightSteelBlue", "White")
Setel properti BackgroundColor dari semua sel baris Anda
"=ReportItems!RowGroupColor.Value"
Voila! Ini juga memecahkan banyak masalah yang disebutkan di utas ini:
Akan luar biasa jika SSRS akan mengekspos properti selain Nilai pada Kotak Teks. Anda bisa memasukkan perhitungan seperti ini di properti BackgroundColor dari kotak teks grup baris dan kemudian merujuknya sebagai ReportItems! RowGroup.BackgroundColor di semua sel lain.
Ahh well, kita bisa bermimpi ...
sumber
Masalah saya adalah bahwa saya ingin semua kolom dalam satu baris memiliki latar belakang yang sama. Saya mengelompokkan berdasarkan baris dan kolom, dan dengan dua solusi teratas di sini saya mendapatkan semua baris di kolom 1 dengan latar belakang berwarna, semua baris di kolom 2 dengan latar belakang putih, semua baris di kolom 3 dengan latar belakang berwarna , dan seterusnya. Seolah-olah
RowNumber
danbOddRow
(dari solusi Catch22) memperhatikan grup kolom saya alih-alih mengabaikan itu dan hanya bergantian dengan baris baru.Yang saya inginkan adalah agar semua kolom di baris 1 memiliki latar belakang putih, lalu semua kolom di baris 2 memiliki latar belakang berwarna, lalu semua kolom di baris 3 memiliki latar belakang putih, dan sebagainya. Saya mendapatkan efek ini dengan menggunakan jawaban yang dipilih tetapi bukannya lewat
Nothing
keRowNumber
, saya melewati nama grup kolom saya, misalnyaKupikir ini mungkin berguna bagi orang lain.
sumber
Saya pikir trik ini tidak dibahas di sini. Jadi begini,
Dalam semua jenis matriks kompleks, ketika Anda ingin warna sel alternatif, baik baris bijak atau kolom bijaksana, solusi yang bekerja adalah,
Jika Anda ingin warna sel kolom pengganti bijaksana,
Itu saja.
Sama untuk baris warna alternatif, hanya Anda harus mengedit solusi yang sesuai.
CATATAN: Di sini, kadang-kadang Anda perlu mengatur batas sel yang sesuai, biasanya menghilang.
Juga jangan lupa untuk menghapus nilai 1 dalam laporan yang muncul ketika Anda membuat grup induk palsu.
sumber
Jika untuk seluruh laporan Anda memerlukan warna bergantian, Anda dapat menggunakan DataSet yang terikat dengan Tablix Anda untuk nomor laporan identitas seluruh laporan dan menggunakannya dalam fungsi RowNumber ...
sumber
@ Aditya jawabannya bagus, tetapi ada contoh di mana pemformatan akan dibuang jika sel pertama dari baris (untuk pemformatan latar belakang baris) memiliki nilai yang hilang (dalam tablix kompleks dengan grup kolom / baris dan nilai yang hilang).
Solusi @ Aditya secara pintar memanfaatkan
countDistinct
hasilrunningValue
fungsi untuk mengidentifikasi nomor baris dalam grup tablix (baris). Jika Anda memiliki baris tablix dengan nilai yang hilang di sel pertama,runningValue
tidak akan menambahcountDistinct
hasil dan itu akan mengembalikan nomor baris sebelumnya (dan, karenanya, akan memengaruhi pemformatan sel itu). Untuk memperhitungkan itu, Anda harus menambahkan istilah tambahan untuk mengimbangicountDistinct
nilai. Yang saya ambil adalah memeriksa nilai running pertama di grup baris itu sendiri (lihat baris 3 dari cuplikan di bawah):Semoga ini membantu.
sumber
Bisakah seseorang menjelaskan logika di balik membalikkan bidang ke false dalam kode di bawah ini (dari posting di atas)
Satu hal yang saya perhatikan adalah bahwa tidak satu pun dari dua metode teratas memiliki gagasan tentang apa warna baris pertama harus dalam kelompok; grup hanya akan mulai dengan warna yang berlawanan dari baris terakhir dari grup sebelumnya. Saya ingin grup saya selalu mulai dengan warna yang sama ... baris pertama dari setiap grup harus selalu putih, dan baris berikutnya diwarnai.
Konsep dasarnya adalah mengatur ulang sakelar ketika setiap grup dimulai, jadi saya menambahkan sedikit kode:
Jadi saya memiliki tiga jenis latar belakang sel sekarang:
Ini bekerja untuk saya. Jika Anda ingin baris pengelompokan menjadi tidak berwarna, atau warna yang berbeda, harus cukup jelas dari ini cara mengubahnya.
Jangan ragu untuk menambahkan komentar tentang apa yang bisa dilakukan untuk meningkatkan kode ini: Saya baru untuk SSRS dan VB, jadi saya sangat curiga bahwa ada banyak ruang untuk perbaikan, tetapi ide dasarnya tampak bagus (dan itu berguna untuk saya) jadi saya ingin membuangnya di sini.
sumber
Saya mencoba semua solusi ini pada Tablix yang Dikelompokkan dengan spasi baris dan tidak ada yang berfungsi di seluruh laporan. Hasilnya adalah duplikat baris berwarna dan solusi lainnya menghasilkan kolom bergantian!
Berikut adalah fungsi yang saya tulis yang berfungsi untuk saya menggunakan Jumlah Kolom:
Untuk 7 Kolom Tablix, saya menggunakan ungkapan ini untuk Row (of Cells) Backcolour:
sumber
Hanya karena tidak ada jawaban di atas yang berfungsi dalam matriks saya, saya memposting ini di sini:
http://reportingservicestnt.blogspot.com/2011/09/alternate-colors-in-matrixpivot-table.html
sumber
Data matriks saya memiliki nilai yang hilang di dalamnya, jadi saya tidak bisa mendapatkan solusi ahmad untuk bekerja, tetapi solusi ini berhasil untuk saya
Ide dasarnya adalah membuat grup anak dan bidang pada grup terdalam Anda yang mengandung warna. Kemudian atur warna untuk setiap sel di baris berdasarkan nilai bidang itu.
sumber
Sedikit modifikasi jawaban lain dari sini yang bekerja untuk saya. Grup saya memiliki dua nilai untuk dikelompokkan, jadi saya dapat menempatkan keduanya di argumen pertama dengan tanda + untuk membuatnya berganti dengan benar
sumber
Saat menggunakan grup baris dan kolom keduanya, saya memiliki masalah di mana warna akan bergantian di antara kolom meskipun itu adalah baris yang sama. Saya menyelesaikan ini dengan menggunakan variabel global yang hanya berganti ketika baris berubah:
Sekarang, di kolom pertama dari baris yang ingin Anda ganti, atur ekspresi warna ke:
-
Di kolom yang tersisa, atur semuanya ke:
Ini akan membuat warna berganti hanya setelah kolom pertama digambar.
Ini dapat (secara tidak dapat diverifikasi) meningkatkan kinerja juga, karena tidak perlu melakukan perhitungan matematika untuk setiap kolom.
sumber