[Crystal Report] Membuat Fungsi Terbilang

Deskripsi 
     Fungsi terbilang bisa dibilang sangatlah penting bagi pelaporan terutama dalam hal finance seperti giro / cek maupun invoice. berikut adalah tutorial membuat fungsi terbilang menggunakan custom function crystal report bukan dengan tambahan seperti library external (.DLL) maupun passing parameter ke crystal report, tetapi bener" fungsi yg include di dalam crystal report, butuh effort juga untuk membuat fungsi ini di crystal report, karena klo menggunakan bahasa pemrograman lain tentu sangat mudah karena bisa menggunakan recursive tapi untuk bahasa basic sepertinya tidak bisa dan harus dilakukan secara terpisah belum lagi debug bilangannya yg bikin mata saya seakan" menjadi juling @_@.

How To
1. Buka Crystal Report , buka menu Report > Formula Workshop
2. Klik 2 kali "Custom Report Function"
3. Klik Icon "New" (gambarnya Kertas Putih), akan muncul kotak dan berikan nama "terbilang"
4. layar code akan aktif , untuk kali ini saya akan menggunakan bahasa pemrograman "basic", karena crystal report defaultnya menggunakan "crystal syntax" maka kita harus merubah menjadi "Basic Syntax" caranya coba dilihat di bagian kanan atas bagian inner menu bar, itu tinggal di scroll jadikan ke "Basic Syntax"

Image and video hosting by TinyPic

5. Klik kembali Icon "New" (gambarnya Kertas Putih), dan buat fungsi seperti di gambar dibawah ini , jangan lupa semua code di set ke "Basic Syntax"

Image and video hosting by TinyPic

6. Fungsi custom sudah kita buat sekarang tinggal memanggil, gmn caranya ? tinggal buat yg namanya formula atau lebih enaknya kita sebut custom field, caranya coba lihat kembali menu di sebelah kiri (yg tadi jangan di close dulu) pilih folder "Formula Field" klik 2 kali kemudian pilih Icon "New" (gambarnya Kertas Putih), akan muncul kotak dan berikan nama "TerbilangToString", kemudian ketikan :

"## " & terbilang (1000000) & " Rupiah ##"

tutup formula workshop, kembali ke layar laporan, DRAG formula fieldnya ke Design, coba di running.

maka ketika di run akan menghasilkan "## satu juta rupiah ##".

anda dapat mengganti nominal 1 juta tadi dengan field yg anda passing dari database.
contohnya : terbilang ({table.field_database})

berikut adalah contoh punya saya

terbilang pada invoice

*KNOWN BUG :
Bagi yang sudah download harap ubah line ini pada fungsi terbilang()  :

elseif banyakString < 7 then 'untuk ratusan ribu 100.000 - 999.999
            'terbilang = bilanganRatusanRibu(Amount) & bilanganRatusan(Amount mod 1000) & bilanganPuluhan(Amount mod 100) --bug 17 April 2015
 harap diubah menjadi
            terbilang = bilanganRatusanRibu(Amount) & bilanganPuluhanRibu(Amount mod 100000) & bilanganRatusan(Amount mod 1000) & bilanganPuluhan(Amount mod 100)

Download Custom Function Terbilang Crystal Report
Instruction :
1. Download the file by click the button below
2. after download, you see a list of .txt file, that's the function, copy paste into your crystal report
3. call the function : terbilang(your value)
4. if you find the bugs please report to me for fix, thank you.
Jika masih bingung , mungkin anda bisa melihat video yang sudah saya buat


13 comments

klo ada kesalahan dalam pembacaan harap di comment di bawah sini ya , nanti langsung di fix.

terima kasih

Reply

maaf... sya mau tanya..
di crystal report saya gk da menu formula workshopnya bagaimna?

saya menggunakan CR versi 8.5

Reply

Dear Mas Antonius,

ada kok mas masa ga ada haha , di menu REPORT > FORMULA WORKSHOP

di tutorial ini saya pakai versi CR 9 tapi seharusnya versi sebelumnya juga udah ada.

Reply

satu lagi , jangan lupa di benerin bugsnya mas :D

Reply

gk da mas pa CR saya ya?
da link CR 9+creknya?

trus kalo saya makek delphi, scrip tu tetap mash bsa dipnggil gk?

Reply

waduh klo link cr9 sama cracknya saya ga ada mas, untuk masalah script saya yakin bisa .... karena script ini yg eksekusi adalah crystal reportnya bukan dari pemrograman lain semacam delphi maupun .NET. bahkan anda bisa merunning scriptnya via crystal report itu sendiri :D.
yang anda butuhkan bagaimana crystal report ini bisa diintegrasikan ke delphi. script ini di embed di file report loh mas bukan di dalam delphinya.

Reply

ratusan ribu dan jutaan tidak tampil gan

Reply

ratusan ribu dan jutaan tidak tampil gan

Reply

ratusan ribu dan jutaan gak tampil
gimana caranya gan

Reply

angka yg error dimasukan gan !!!
yg ratusan ribu kyknya udah saya benerin bug nya !! liad article di atas
untuk yg jutaan tolong dimasukin nominalnya biar saya cek !!

Reply

saya cuma mau sampai jutaan ajah
code agan saya ubah seperti di bawah
tolong di cek gan code nya

Function terbilang (Amount as Double) as string
'--------------------------------
'Author : Mahendra Mustika Wijaya
'Modul : Utama
'--------------------------------

Dim bilangan(12) As String
Dim strAmount as string
Dim banyakString as Double

bilangan(1) ="satu"
bilangan(2) ="dua"
bilangan(3) ="tiga"
bilangan(4) ="empat"
bilangan(5) ="lima"
bilangan(6) ="enam"
bilangan(7) ="tujuh"
bilangan(8) ="delapan"
bilangan(9) ="sembilan"
bilangan(10) ="sepuluh"
bilangan(11) ="sebelas"

'remove ,(koma) dan decimal(.00)
strAmount = replace(Cstr(Amount),".00","")
strAmount = replace(Cstr(strAmount),",","")
banyakString = CDbl(replace(CStr(len(strAmount)),".00",""))

'debug here
'terbilang = CStr(banyakString)

if banyakString = 0 then
terbilang = " "
elseif banyakString < 3 then 'untuk puluhan 1 - 99
terbilang = bilanganPuluhan(Amount)
elseif banyakString < 4 then 'untuk ratusan 1.00 - 9.99
terbilang = bilanganRatusan(Amount) & bilanganPuluhan(Amount mod 100)
elseif banyakString < 5 then 'untuk ribuan 1.000 - 9.999
terbilang = bilanganRibuan(Amount) & bilanganRatusan(Amount mod 1000) & bilanganPuluhan((Amount mod 1000) mod 100)
elseif banyakString < 6 then 'untuk puluhan ribu 10.000 - 99.999
terbilang = bilanganPuluhanRibu(Amount) & bilanganRatusan((Amount mod 10000) mod 1000) & bilanganPuluhan(((Amount mod 10000) mod 1000) mod 100)
elseif banyakString < 7 then 'untuk ratusan ribu 100.000 - 999.999
terbilang = bilanganRatusanRibu(Amount) & bilanganPuluhanRibu(Amount mod 100000) & bilanganRatusan(Amount mod 1000) & bilanganPuluhan(Amount mod 100)
elseif banyakString < 8 then 'untuk jutaan 1.000.000 - 9.999.999
terbilang = bilanganJutaan(Amount,Amount) & bilanganRatusanRibu(Amount mod 1000000) & bilanganPuluhanRibu(Amount mod 100000) & bilanganRatusan(Amount mod 1000) & bilanganPuluhan((Amount mod 1000) mod 100)
end if
End Function

Reply

code itu gak bisa dari pulah ribu k atas

Reply

codenya sih udah bener gan sama persis dengan updatean saya , klo masih ga bisa kasih contoh nominal nya donk gan.

contoh : 1200000 (satu juta dua ratus ribu)

karena walaupun sama" jutaan tapi prosesnya agak sedikit berbeda tergantung dari nilainya juga.

Reply

Post a Comment

Harap gunakan bahasa yang baik dan sopan, terima kasih