Crystal Report .NET selain memudahkan kita dalam mendesain report/laporan juga menyediakan puluhan fungsi yang siap pakai (built-in function) yang bisa mempercepat dalam pembuatan report/laporan. Tetapi ada waktunya ketika kita membutuhkan fungsi khusus yang tidak disediakan oleh Crystal Report .NET, dan kabar baiknya Crystal Report .NET juga menyediakan fasilitas untuk membuat fungsi tambahan yang dikenal dengan istilah User Function Library (UFL).
User Function Library (UFL) adalah class library .NET yang dibuat dengan beberapa aturan sebagai berikut :
- Nama project harus di beri prefix
CRUFL
. Misal kita ingin membuat project dengan nama CrystalReportHelper, nama project ini harus kita tambahkan prefixCRUFL
, sehingga nama projectnya menjadi CRUFLCrystalReportHelper. - Project harus terdiri dari interface dan class konkret
- Setiap interface harus mempunyai attribut COM yang mempunya tiga nilai yaitu
ComVisible
,InterfaceType
danGuid
- Begitu juga class konkret harus mempunyai attribut COM yang mempunya tiga nilai yaitu
ComVisible
,ClassInterface
danGuid
- Mengaktifkan pilihan
Register for COM interop
(Project -> Properties -> Build) - Menginstall hasil build ke GAC(Global Assembly Cache)
Oke kita langsung saja, kita awali dengan membuat User Function Library Class Library.
Membuat UFL Class Library
Klik menu File ->New -> Project …
Pada dialog New Project aktifkan pilihan Visual C# kemudian pada pilihan Templates pilih Class Library
Nama project harus diberi prefix
CRUFL
Setelah project berhasil dibuat, klik kanan nama project -> properties
Klik tab Build, kemudian aktifkan pilihan
Register for COM interop
Mengaktifkan pilihan
Register for COM interop
akan menyebabkan assembly secara otomatis diregister oleh utility regasm.exe, ketika project dibuild/compile. Jadi, kita tidak perlu menjalankan regasm.exe secara manual via command prompt.
Setelah project berhasil dibuat, kita akan menambahkan interface dan class konkretnya. Untuk contoh kali ini kita akan membuat fungsi terbilang yang biasanya digunakan dalam pembuatan aplikasi ritel.
Kita akan mulai dengan interface terlebih dulu.
Membuat Interface dengan Attribut COM
Hapus class default (Class1)
Tambahkan sebuah interface dengan nama ITerbilang, kemudian tambahkan juga method abstractnya dengan nama TerbilangIndonesia
Kemudian tambahkan attribut COM
Attribut COM untuk interface terdiri dari tiga nilai yaitu
ComVisible
,InterfaceType
danGuid
. Attribut ini perlu kita tambahkan agar class library yang kita buat bisa dikenali oleh Crystal Report.Untuk mendapatkan nilai GUID, bisa menggunakan tool GUID yang sudah disediakan oleh Visual Studio .NET. Tool ini bisa diaktifkan melalui menu
Tools -> Create GUID
.
Setelah menyelesaikan pembuatan interface ITerbilang, kita lanjutkan dengan pembuatan class konkretnya.
Membuat Class dengan Attribut COM
Tambahkan sebuah class dengan nama Terbilang. Class harus mengimplementasikan interface ITerbilang.
Karena class Terbilang mengimplementasikan interface ITerbilang, maka class Terbilang wajib mendefinisikan ulang (override) method TerbilangIndonesia.
Kemudian tambahkan Attribut COM
Attribut COM untuk class terdiri dari tiga nilai yaitu
ComVisible
,ClassInterface
danGuid
. Setelah itu lengkapi kode method TerbilangIndonesia seperti berikut :
Langkah berikutnya adalah mengeset Strong-Name key, ini adalah peraturan berikutnya yang harus kita ikuti agar class User Function Library (UFL) yang sudah kita buat bisa di daftarkan ke GAC(Global Assembly Cache).
Mengeset Strong-Name key
Klik kanan project -> Properties
Aktifkan tab signing, kemudian aktifkan pilihan
Sign the assembly
Pada pilihan combo
Choose a string name key file
, pilih <New…> setelah itu akan tampil dialogCreate Strong Name Key
kemudian isikan nilai input key file name, misal dengan namaCRUFLCrystalReportHelperKey
.Terakhir lakukan proses Build/Compile, melalui menu Build -> Build Solution
Mendaftarkan Assembly ke GAC(Global Assembly Cache)
Hasil build/compile dari project CRUFLCrystalReportHelper
, akan menghasilkan file dengan ekstensi .dll atau yang dikenal dengan istilah file Assembly. File ini harus kita daftarkan terlebih dulu ke GAC(Global Assembly Cache) agar bisa dikenali oleh Crystal Report.
Berikut langkah-langkah untuk mendaftarkan file Assembly ke GAC(Global Assembly Cache) :
Aktifkan Visual Studio Command Prompt sesuai dengan versi Visual Studio .NET Anda
Gunakan tool
gacutil
, dengan format perintah seperti berikut1
gacutil -if <Assembly Name>
contoh :
1
gacutil -if CRUFLCrystalReportHelper.dll
Jika berhasil akan tampil pesan
Assembly successfully added to the cache
.
Testing User Function Library
Setelah menyelesaikan project CRUFLCrystalReportHelper dan mendaftarkannya ke GAC(Global Assembly Cache), kita akan menambahkan project baru dengan tipe WinForm Application.
Setelah itu tambahkan juga item Crystal Report.
Kemudian desain reportnya seperti berikut :
Selanjutnya kita akan menambahkan formula baru dengan nama terbilang
, caranya dengan mengklik kanan Formula Fields
-> New …
Setelah itu akan tampil dialog Formula Workshop
Fungsi terbilang TerbilangIndonesia
yang sudah kita buat masuk ke dalam kelompok Additional Functions
-> COM and .NET UFLs (u212com.dll)
. Fungsi ini membutuhkan parameter nominal yang nilainya kita isi dengan field total dari tabel Jual.
Kemudian tambahkan formula terbilang
ke dalam report.
Terakhir kita running project, dan lihat hasil dari formula terbilangnya.
Selamat MENCOBA :)