Bagikan melalui


Kode kustom dan referensi rakitan dalam ekspresi dalam laporan paginasi di Perancang Laporan (SSRS)

Berlaku untuk: Perancang Laporan di SQL Server Data Tools ❌ Power BI Report Builder Microsoft Report Builder ❌ (SSRS)

Anda dapat menambahkan referensi ke kode kustom yang disematkan dalam laporan atau ke rakitan kustom yang Anda buat dan simpan ke komputer Anda dan sebarkan ke server laporan. Gunakan kode yang disematkan untuk konstanta kustom, fungsi kompleks, atau fungsi yang digunakan beberapa kali dalam satu laporan. Gunakan rakitan kode kustom untuk mempertahankan kode di satu tempat dan bagikan untuk digunakan oleh beberapa laporan. Kode kustom dapat mencakup konstanta kustom, variabel, fungsi, atau subroutine baru. Anda dapat menyertakan referensi baca-saja ke koleksi bawaan seperti koleksi Parameter. Namun, Anda tidak dapat meneruskan set nilai data laporan ke fungsi kustom; secara khusus, agregat kustom tidak didukung.

Penting

Untuk perhitungan sensitif waktu yang dievaluasi sekali pada run-time dan Anda ingin tetap memiliki nilai yang sama sepanjang pemrosesan laporan, pertimbangkan apakah akan menggunakan variabel laporan atau variabel grup. Untuk informasi selengkapnya, lihat Referensi Koleksi Variabel Laporan dan Grup (Pembuat Laporan dan SSRS).

Perancang Laporan adalah lingkungan penulisan pilihan yang digunakan untuk menambahkan kode kustom ke laporan. Report Builder mendukung pemrosesan laporan yang memiliki ekspresi yang valid, atau yang menyertakan referensi ke rakitan kustom di server laporan. Pembuat Laporan tidak menyediakan cara untuk menambahkan referensi ke rakitan kustom.

Catatan

Ketahuilah bahwa selama peningkatan server laporan, laporan yang bergantung pada rakitan kustom mungkin memerlukan langkah tambahan untuk menyelesaikan peningkatan.

Catatan

Anda dapat membuat dan memodifikasi file definisi laporan yang dipaginasi (.rdl) di Microsoft Report Builder, Power BI Report Builder, dan di Perancang Laporan di SQL Server Data Tools.

Bekerja dengan Kode Kustom di Pembuat Laporan

Di Pembuat Laporan, Anda dapat membuka laporan dari server laporan yang menyertakan referensi ke rakitan kustom. Misalnya, Anda dapat mengedit laporan yang dibuat dan disebarkan dengan menggunakan Perancang Laporan di SQL Server Data Tools (SSDT). Rakitan kustom harus disebarkan ke server laporan.

Anda tidak dapat melakukan hal berikut:

  1. Tambahkan referensi atau instans anggota kelas ke laporan.

  2. Pratinjau laporan dengan referensi ke rakitan kustom dalam mode lokal.

Termasuk Referensi ke Fungsi yang Umum Digunakan

Gunakan kotak dialog Ekspresi untuk menampilkan daftar fungsi umum bawaan yang dikategorikan ke Pembuat Laporan. Saat Anda memperluas Fungsi Umum dan mengklik kategori, panel Item menampilkan daftar fungsi yang Anda sertakan dalam ekspresi. Fungsi umum termasuk kelas dari .NET Framework Math dan Convert namespace serta fungsi pustaka run-time Visual Basic. Untuk kenyamanan, Anda dapat melihat fungsi yang paling umum digunakan dalam kotak dialog Ekspresi , di mana fungsi tersebut dicantumkan menurut kategori: Teks, Tanggal dan Waktu, Matematika, Inspeksi, Alur Program, Agregat, Keuangan, Konversi, dan Lain-lain. Fungsi yang kurang umum digunakan tidak muncul dalam daftar tetapi masih dapat digunakan dalam ekspresi.

Untuk menggunakan fungsi bawaan, klik dua kali nama fungsi di panel Item. Deskripsi fungsi muncul di panel Deskripsi dan contoh panggilan fungsi muncul di panel Contoh. Di panel kode, saat Anda mengetik nama fungsi diikuti dengan tanda kurung kiri (, IntelliSense membantu menampilkan setiap sintaks yang valid untuk panggilan fungsi. Misalnya, untuk menghitung nilai maksimum untuk bidang bernama Quantity dalam tabel, tambahkan ekspresi =Max( sederhana ke panel Kode, lalu gunakan tag pintar untuk melihat semua sintaks yang valid untuk panggilan fungsi. Untuk menyelesaikan contoh ini, ketik =Max(Fields!Quantity.Value).

Untuk informasi selengkapnya tentang setiap fungsi, lihat Math, , Convertdan Anggota Pustaka Runtime Visual Basic di MSDN.

Termasuk Referensi ke Fungsi yang Kurang Umum Digunakan

Untuk menyertakan referensi ke namespace CLR lain yang kurang umum digunakan, Anda harus menggunakan referensi yang sepenuhnya memenuhi syarat, misalnya, StringBuilder. IntelliSense tidak didukung di panel kode kotak dialog Ekspresi untuk fungsi yang kurang umum digunakan ini.

Untuk informasi selengkapnya, lihat Anggota Pustaka Runtime Visual Basic di MSDN.

Termasuk Referensi ke Rakitan Eksternal

Untuk menyertakan referensi ke kelas dalam rakitan eksternal, Anda harus mengidentifikasi assembly untuk prosesor laporan. Gunakan halaman Referensi dari kotak dialog Properti Laporan untuk menentukan nama perakitan yang sepenuhnya memenuhi syarat untuk ditambahkan ke laporan. Dalam ekspresi Anda, Anda harus menggunakan nama yang sepenuhnya memenuhi syarat untuk kelas dalam rakitan. Kelas dalam rakitan eksternal tidak muncul dalam kotak dialog Ekspresi ; Anda harus memberikan nama yang benar untuk kelas tersebut. Nama yang sepenuhnya memenuhi syarat mencakup namespace layanan, nama kelas, dan nama anggota.

Termasuk Kode Yang Disematkan

Untuk menambahkan kode yang disematkan ke laporan, gunakan tab Kode dari kotak dialog Properti Laporan. Blok kode yang Anda buat dapat berisi beberapa metode. Metode dalam kode yang disematkan harus ditulis di Microsoft Visual Basic dan harus berbasis instans. Prosesor laporan secara otomatis menambahkan referensi untuk namespace System.Convert dan System.Math. Gunakan halaman Referensi dari kotak dialog Properti Laporan untuk menambahkan referensi rakitan tambahan. Untuk informasi selengkapnya, lihat Menambahkan Referensi Rakitan ke Laporan (SSRS).

Metode dalam kode yang disematkan tersedia melalui anggota Kode yang ditentukan secara global. Anda mengaksesnya dengan merujuk ke anggota Kode dan nama metode. Contoh berikut memanggil metode ToUSD, yang mengonversi nilai di StandardCost bidang menjadi nilai dolar:

=Code.ToUSD(Fields!StandardCost.Value)  

Untuk mereferensikan koleksi bawaan dalam kode kustom Anda, sertakan referensi ke objek Laporan bawaan:

=Report.Parameters!Param1.Value  

Contoh berikut menunjukkan cara menentukan beberapa konstanta dan variabel kustom.

Public Const MyNote = "Authored by Bob"  
Public Const NCopies As Int32 = 2  
Public Dim  MyVersion As String = "123.456"  
Public Dim MyDoubleVersion As Double = 123.456  

Meskipun konstanta kustom tidak muncul dalam kategori Konstanta dalam kotak dialog Ekspresi (yang hanya menampilkan konstanta bawaan), Anda dapat menambahkan referensi ke konstanta tersebut dari ekspresi apa pun, seperti yang diperlihatkan dalam contoh berikut. Dalam ekspresi, konstanta kustom diperlakukan sebagai Varian.

=Code.MyNote  
=Code.NCopies  
=Code.MyVersion  
=Code.MyDoubleVersion  

Contoh berikut mencakup referensi kode dan implementasi kode fungsi FixSpelling, yang menggantikan teks "Bicycle" untuk semua kemunculan teks "Sepeda" di SubCategory bidang .

=Code.FixSpelling(Fields!SubCategory.Value)

Kode berikut, ketika disematkan dalam blok kode definisi laporan, menunjukkan implementasi metode FixSpelling . Contoh ini menunjukkan kepada Anda cara menggunakan referensi yang sepenuhnya memenuhi syarat ke kelas Microsoft .NET Framework StringBuilder .

Public Function FixSpelling(ByVal s As String) As String  
   Dim strBuilder As New System.Text.StringBuilder(s)  
   If s.Contains("Bike") Then  
      strBuilder.Replace("Bike", "Bicycle")  
      Return strBuilder.ToString()  
      Else : Return s  
   End If  
End Function  

Untuk informasi selengkapnya tentang koleksi dan inisialisasi objek bawaan, lihat Referensi Global dan Pengguna Bawaan (Pembuat Laporan dan SSRS) dan Menginisialisasi Objek Rakitan Kustom.

Termasuk Referensi ke Parameter dari Kode

Anda dapat mereferensikan koleksi parameter global melalui kode kustom di blok Kode definisi laporan atau dalam rakitan kustom yang Anda sediakan. Koleksi parameter bersifat baca-saja dan tidak memiliki iterator publik. Anda tidak dapat menggunakan konstruksi Visual Basic For Each untuk menelusuri koleksi. Anda perlu mengetahui nama parameter yang ditentukan dalam definisi laporan sebelum Anda dapat mereferensikannya dalam kode Anda. Namun, Anda dapat melakukan iterasi melalui semua nilai parameter multi nilai.

Tabel berikut ini mencakup contoh mereferensikan koleksi Parameters bawaan dari kode kustom:

**Meneruskan seluruh koleksi parameter global ke kode kustom.**Fungsi ini mengembalikan nilai parameter laporan tertentu MyParameter.

Referensi dalam Ekspresi =Code.DisplayAParameterValue(Parameters)

Definisi Kode Kustom

Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object  
Return parameters("MyParameter").Value  
End Function  

Meneruskan parameter individual ke kode kustom.

Referensi dalam Ekspresi =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Contoh ini mengembalikan nilai parameter yang diteruskan. Jika parameter adalah parameter multinilai, string yang dikembalikan adalah perangkaian semua nilai.

Definisi Kode Kustom

Public Function ShowParameterValues(ByVal parameter as Parameter)  
 as String  
   Dim s as String   
   If parameter.IsMultiValue then  
      s = "Multivalue: "   
      For i as integer = 0 to parameter.Count-1  
         s = s + CStr(parameter.Value(i)) + " "   
      Next  
   Else  
      s = "Single value: " + CStr(parameter.Value)  
   End If  
   Return s  
End Function  

Termasuk Referensi ke Kode dari Rakitan Kustom

Untuk menggunakan rakitan kustom dalam laporan, Anda harus terlebih dahulu membuat rakitan, membuatnya tersedia untuk Perancang Laporan, menambahkan referensi ke rakitan dalam laporan, lalu menggunakan ekspresi dalam laporan untuk merujuk ke metode yang terkandung dalam rakitan tersebut. Saat laporan disebarkan ke server laporan, Anda juga harus menyebarkan rakitan kustom ke server laporan.

Untuk informasi tentang membuat rakitan kustom dan membuatnya tersedia untuk Pembuat Laporan, lihat Menggunakan Rakitan Kustom dengan Laporan.

Untuk merujuk ke kode kustom dalam ekspresi, Anda harus memanggil anggota kelas dalam rakitan. Bagaimana Anda melakukan ini tergantung pada apakah metode ini statis atau berbasis instans. Metode statis dalam rakitan kustom tersedia secara global dalam laporan. Anda dapat mengakses metode statis dalam ekspresi dengan menentukan namespace, kelas, dan nama metode. Contoh berikut memanggil metode ToGBP, yang mengonversi nilai StandardCost dari dolar ke pound sterling:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)  

Metode berbasis instans tersedia melalui anggota Kode yang ditentukan secara global. Anda mengaksesnya dengan merujuk ke anggota Kode , diikuti dengan instans dan nama metode. Contoh berikut memanggil metode instans ToEUR, yang mengonversi nilai StandardCost dari dolar ke euro:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)  

Catatan

Di Perancang Laporan, rakitan kustom dimuat sekali dan tidak dibongkar hingga Anda menutup Visual Studio. Jika Anda mempratinjau laporan, buat perubahan pada rakitan kustom yang digunakan dalam laporan, lalu pratinjau laporan lagi, perubahan tidak akan muncul di pratinjau kedua. Untuk memuat ulang rakitan, tutup dan buka kembali Visual Studio lalu pratinjau laporan.

Untuk informasi selengkapnya tentang mengakses kode Anda, lihat Mengakses Rakitan Kustom Melalui Ekspresi.

Meneruskan Koleksi Bawaan ke Dalam Rakitan Kustom

Jika Anda ingin meneruskan koleksi bawaan, seperti koleksi Global atau Parameter , ke dalam rakitan kustom untuk pemrosesan, Anda harus menambahkan referensi perakitan dalam proyek kode Anda ke perakitan yang menentukan koleksi bawaan dan mengakses namespace yang benar. Bergantung pada apakah Anda mengembangkan rakitan kustom untuk laporan yang dijalankan di server laporan (laporan server) atau laporan yang dijalankan secara lokal dalam aplikasi .NET (laporan lokal), perakitan yang perlu Anda referensikan berbeda. Lihat di bawah untuk detailnya.

  • Namespace: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel

  • Assembly (laporan lokal): Microsoft.ReportingServices.ProcessingObjectModel.dll

  • Assembly (laporan server): Microsoft.ReportViewer.ProcessingObjectModel.dll

Karena konten koleksi Bidang dan ReportItems dapat berubah secara dinamis saat runtime, Anda tidak boleh menahannya di seluruh panggilan ke dalam rakitan kustom (misalnya, dalam variabel anggota). Rekomendasi yang sama umumnya berlaku untuk semua koleksi bawaan.

Lihat Juga

Menambahkan Kode ke Laporan (SSRS)
Menggunakan Rakitan Kustom dengan Laporan
Menambahkan Referensi Rakitan ke Laporan (SSRS)
Tutorial Reporting Services (SSRS)
Contoh Ekspresi (Pembuat Laporan dan SSRS)
Sampel Laporan (Pembuat Laporan dan SSRS)