Wednesday, May 19, 2010

Membuat Fungsi pada kristal report

Membuat fungsi pada Crsytal Report

Salah satu kelebihan Crystal Report v7 dan terbaru (v8) adalah kemampuannya dalam memberikan keleluasaan kepada para developer untuk membuat fungsi sendiri/User Defined Function (UDF) menggunakan tool pemrograman yang mendukung Component Object Model (COM) seperti VB, Delphi, Visual C++ dsb.

Kenapa membuat fungsi sendiri ? bukankah Crystal Report telah menyediakan berbagai macam fungsi dari operasi string sampai dengan statistika ? betul, tapi tidak semuanya. Katakanlah kita sedang membuat program aplikasi untuk mencetak faktur penjualan dan anda harus mencetak nilai nominal penjualan beserta jumlah terbilangnya. Adakah fungsi terbilang (dalam bahasa Indonesia) pada Crystal Report ? nah, disinilah manfaatnya dan pada kesempatan ini penulis akan mencoba membuat fungsi terbilang pada Visual Basic 6 dan memanggilnya menggunakan Crystal Report v7.

Cara Kerja

Crystal Report mengenali fungsi yang dibuat sendiri diatas melalui User Function Library (UFL) yang bertindak sebagai "penterjemah" antara Crystal Report dan komponen yang kita buat. UFL sendiri sebenarnya berupa file .DLL, U2LCOM.DLL, dan biasanya terdapat pada direktori WINDOWS\CRYSTAL ketika kita install Crystal Report.

Agar komponen yang kita buat dapat diakses oleh file diatas, project yang kita buat harus mempunyai nama dengan awalan CRUFL (misalnya CRUFLFungsiku) dan fungsi-fungsi yang dideklarasikan pada satu Class harus berifat global/public.


Gambar 1
Fungsi dari VB yang dipanggil Crystal Report

Membuat ActiveX DLL

Jalankan Visual Basic, pada window New Project pilih ActiveX DLL dan klik tombol Ok, anda akan dibuatkan satu buah project dengan satu buah Class. Pilih menu Project | Project1 Properties, pada tab General set nama project menjadi CRUFLFungsiku (lihat gambar 2).


Gambar 2.
Set nama project.

Set nama class1 menjadi Konversi pada window property (lihat gambar3), aktifkan window code dan ketikkan kode dibawah :

Public Function Terbilang(Angka As Double) As String

Dim strJmlHuruf$, intPecahan As Integer, strPecahan$,
Urai$, Bil1$, strTot$, Bil2$
Dim x As Integer, y As Integer, z As Integer

If IsNull(Angka) Then
Terbilang = ""
Exit Function
End If

strJmlHuruf = LTrim(CStr(Angka))
intPecahan = Val(Right(Mid(CStr(Angka), 15, 2), 2))

If (intPecahan = 0) Then
strPecahan = ""
Else
strPecahan = LTrim(Str(intPecahan)) + "/100 "
End If

x = 0
y = 0
Urai = ""
While (x < x =" x" strtot =" Mid(strJmlHuruf," y =" y" z =" Len(strJmlHuruf)" z =" 1" z =" 7" z =" 10" z =" 13)" bil1 = "SATU " z =" 4)" x =" 1)" bil1 = "SE" bil1 = "SATU " z =" 2" z =" 5" z =" 8" z =" 11" z =" 14)" x =" x" strtot =" Mid(strJmlHuruf," z =" Len(strJmlHuruf)" bil2 = "" bil1 = "SEPULUH " bil1 = "SEBELAS " bil1 = "DUA BELAS " bil1 = "TIGA BELAS " bil1 = "EMPAT BELAS " bil1 = "LIMA BELAS " bil1 = "ENAM BELAS " bil1 = "TUJUH BELAS " bil1 = "DELAPAN BELAS " bil1 = "SEMBILAN BELAS " bil1 = "SE" bil1 = "DUA " bil1 = "TIGA " bil1 = "EMPAT " bil1 = "LIMA " bil1 = "ENAM " bil1 = "TUJUH " bil1 = "DELAPAN " bil1 = "SEMBILAN " bil1 = ""> 0) Then
If (z = 2 Or z = 5 Or z = 8 Or z = 11 Or z = 14) Then
Bil2 = "PULUH "
ElseIf (z = 3 Or z = 6 Or z = 9 Or z = 12 Or z = 15) Then
Bil2 = "RATUS "
Else
Bil2 = ""
End If
Else
Bil2 = ""
End If
If (y > 0) Then
Select Case z
Case 4
Bil2 = Bil2 + "RIBU "
y = 0
Case 7
Bil2 = Bil2 + "JUTA "
y = 0
Case 10
Bil2 = Bil2 + "MILYAR "
y = 0
Case 13
Bil2 = Bil2 + "TRILYUN "
y = 0
End Select
End If
Urai = Urai + Bil1 + Bil2
Wend
Urai = Urai + strPecahan
Terbilang = Urai & "RUPIAH"
End Function


Gambar 3
Setting nama class

Save project diatas dan pilih menu File | Make CRUFLFungsiku.dll. Jika tidak ditemukan error pada saat kompilasi maka akan dibuatkan file CRUFLFungsiku.dll.

Menambahkan Fungsi pada Crystal Report

Sekarang kita akan mencoba membuat laporan menggunakan Crystal Report dengan memanfaatkan fungsi diatas. Laporan yang akan dibuat diambil dari myDB.mdb yang mempunyai struktur sebagai berikut :

Nama Field Tipe Lebar
Nama Barang TEXT 50
Harga LONG N/A


Jalankan program Crystal Report, buat report baru dan tambahkan kedua field diatas. Pilih menu Insert | Formula Field, klik tombol New dan ketikan nama Formula, misalnya Terbilang dan klik tombol Ok. Pada Formula Editor ketikkan kode dibawah :

FungsikuKonversiTerbilang({Daftar Harga.Harga})

Atau anda bisa mencari fungsi diatas pada Additional Functions.


Gambar 4
Contoh laporan yang menggunakan fungsi terbilang

Jika anda perhatikan, nama fungsi yang dibuat pada Formula Editornya Crystal Report menjadi [Nama Project] [Nama Class] [Nama Fungsi] (lihat gambar 1), sebenarnya hal ini sudah diset sedemikian rupa oleh Crystal report sendiri agar nama fungsi tersebut benar-benar unik. Tetapi jika anda yakin fungsi yang anda buat sudah unik dan ingin menghilangkan nama project dan nama class didepan nama fungsi diatas, anda tinggal men-set variabel UFPrefixFunction menjadi FALSE, sebagai berikut :

Public UFPrefixFunctions as Boolean

Private Sub Class_Initialize()

UFPrefixFunctions = False

End Sub

Konversi Variabel

Pada saat diekseskusi, semua tipe variabel akan dikonversi oleh Crystal Report sebagai berikut :

Visual Basic Crystal Report
Integer NumberVar
Long NumberVar
Single NumberVar
Double NumberVar
Currency CurrencyVar
Date DateVar
Boolean BooleanVar
String StringVar
Error Handling

Sebenarnya jika muncul runtime error pada fungsi yang kita buat diatas, sudah ditangani secara otomatis oleh Crystal Report tetapi jika anda ingin mengontrol error yang muncul yang anda lakukan tinggal menambahkan variabel UFErrorText, misalnya sebagai berikut :

Public UFErrorText

Public Function Terbilang(ANGKA as Integer) as Boolean

On Error Goto err_Terbilang

...
...
...

err_Terbilang :
If Err.Number = 11 Then
UFErrorText = "Error : Division by Zero di modul Terbilang !"
End If
' Error selain 11 di handle oleh Crystal Report

End Function

Kesimpulan

Setelah membaca artikel ini saya harap dapat membuka wawasan dan pengetahuan anda dalam menggunakan Crystal Report dan memperkaya fungsinya dengan fungsi-fungsi buatan sendiri. Pada saat membuat program instalasi menggunakan Package and Deployment Wizard, pastikan file .DLL diatas diikutsertakan untuk mengindari runtime error pada Crystal Report.

No comments:

Post a Comment

selamat datang