Tutorial Kali ini adalah membuat terbilang dengan crystal report.. Saya sih masih newbie di VB.NET saya hanya memanfaatkan parameter di crystal report saja..
Oke ayo kita mulai pertama buat design simple seperti gambar berikut :
![]() |
Gambar Form1 |
Nah masing-masing kasih nama txtJumlah, txtTerbilang dan btnCetak.
Lalu tambahkan 1 buah form lagi misal form2 dan tambahkan tool CrystalReportViewer di dalam toolbox..
![]() |
Gambar Form2 |
![]() | |
Setting Properties |
di dalam CRnya design saja sedemikian Rupa sehingga mirip seperti kuitansi dan tambahkan dua buah parameter di dalam Field Explorer seperti gambar :
![]() |
Setting Parameter |
Sudah itu lalu buat 1 Class Misal Terbilang dan Coding ini di Class Tersebut :
Lalu coding ini di Form1:
Untuk source code nya bisa di download disini
1: Imports VB = Microsoft.VisualBasic
2: Public Class Terbilang
3: Dim temp, angka As String
4: Function GetFigures(ByRef x As String) As String
5: Try
6: Dim satu(10) As String
7: Dim dua(10) As String
8: Dim tiga(10) As String
9: Dim ratus As String
10: Dim ribu As String
11: Dim juta As String
12: Dim miliar As String
13: Dim triliun As String
14: satu(0) = "" : satu(1) = "satu" : satu(2) = "dua" : satu(3) = "tiga" : satu(4) = "empat" : satu(5) = "lima" : satu(6) = "enam" : satu(7) = "tujuh" : satu(8) = "delapan" : satu(9) = "sembilan"
15: dua(0) = "sepuluh" : dua(1) = "sebelas" : dua(2) = "dua belas" : dua(3) = "tiga belas" : dua(4) = "empat belas" : dua(5) = "lima belas" : dua(6) = "enam belas" : dua(7) = "tujuh belas" : dua(8) = "delapan belas" : dua(9) = "sembilan belas"
16: tiga(2) = "dua puluh " : tiga(3) = "tiga puluh " : tiga(4) = "empat puluh " : tiga(5) = "lima puluh " : tiga(6) = "enam puluh " : tiga(7) = "tujuh puluh " : tiga(8) = "delapan puluh " : tiga(9) = "sembilan puluh "
17: ratus = " ratus " : ribu = " ribu " : juta = " juta "
18: miliar = " miliar " : triliun = " triliun "
19:
20: temp = CStr(Val(x))
21: Dim nilai As String
22: nilai = Len(temp)
23: Select Case nilai
24: Case 1
25: angka = satu(CInt(x))
26: Case 2
27: If CDbl(VB.Left(temp, 1)) > 1 Then ' dari 20-99
28: angka = tiga(CInt(VB.Left(temp, 1))) & satu(CInt(VB.Right(temp, 1)))
29: ElseIf CDbl(VB.Left(temp, 1)) = 1 Then ' dari 11-19
30: angka = dua(CInt(VB.Right(temp, 1)))
31: Else ' dari 20 to 90 selisih 10
32: angka = GetFigures(CStr(Int(CDbl(VB.Right(temp, 1)))))
33: End If
34: Case 3
35: If (VB.Left(temp, 1)) > 1 Then
36: angka = satu(CInt(VB.Left(temp, 1))) & ratus ' dari 200-999
37: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 2)))))
38: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
39: angka = satu(CInt(VB.Left(temp, 1))) & ratus ' dari 100-199
40: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 2)))))
41: Else
42: angka = satu(CInt(VB.Left(temp, 1))) & ratus ' dari 200-900
43: End If
44: Case 4
45: If (VB.Left(temp, 1)) > 1 Then
46: angka = satu(CInt(VB.Left(temp, 1))) & ribu ' dari 200-999
47: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 3)))))
48: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
49: angka = satu(CInt(VB.Left(temp, 1))) & ribu ' dari 100-199
50: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 3)))))
51: Else
52: angka = satu(CInt(VB.Left(temp, 1))) & ribu ' dari 200-900
53: End If
54: Case 5
55: If (VB.Left(temp, 1)) > 1 Then
56: If (VB.Mid(temp, 2, 1)) = 0 Then
57: angka = tiga(CInt(VB.Left(temp, 1))) & ribu
58: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 3)))))
59: Else
60: angka = tiga(CInt(VB.Left(temp, 1)))
61: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 4)))))
62: End If
63: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
64: If (VB.Mid(temp, 2, 1)) = 0 Then
65: angka = dua(CInt(VB.Mid(temp, 2, 1))) & ribu
66: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 4)))))
67: Else
68: angka = dua(CInt(VB.Mid(temp, 2, 1))) & ribu
69: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 3)))))
70: End If
71: Else
72: angka = tiga(CInt(VB.Left(temp, 1))) & ribu
73: End If
74: Case 6
75: angka = satu(CInt(VB.Left(temp, 1))) & ratus
76: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 5)))))
77: Case 7
78: angka = satu(CInt(VB.Left(temp, 1))) & juta
79: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 6)))))
80:
81: Case 8
82: If (VB.Left(temp, 1)) > 1 Then
83: If (VB.Mid(temp, 2, 1)) = 0 Then
84: angka = tiga(CInt(VB.Left(temp, 1))) & juta
85: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 6)))))
86: Else
87: angka = tiga(CInt(VB.Left(temp, 1)))
88: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 7)))))
89: End If
90: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
91: If (VB.Mid(temp, 2, 1)) = 0 Then
92: angka = dua(CInt(VB.Mid(temp, 2, 1))) & juta
93: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 7)))))
94: Else
95: angka = dua(CInt(VB.Mid(temp, 2, 1))) & juta
96: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 6)))))
97: End If
98: Else
99: angka = tiga(CInt(VB.Left(temp, 1))) & ribu
100: End If
101: Case 9
102: angka = satu(CInt(VB.Left(temp, 1))) & ratus & juta
103: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 8)))))
104: Case 10
105: angka = satu(CInt(VB.Left(temp, 1))) & miliar
106: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 9)))))
107: Case 11
108: If (VB.Left(temp, 1)) > 1 Then
109: If (VB.Mid(temp, 2, 1)) = 0 Then
110: angka = tiga(CInt(VB.Left(temp, 1))) & miliar
111: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 9)))))
112: Else
113: angka = tiga(CInt(VB.Left(temp, 1)))
114: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 10)))))
115: End If
116: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
117: If (VB.Mid(temp, 2, 1)) = 0 Then
118: angka = dua(CInt(VB.Mid(temp, 2, 1))) & miliar
119: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 10)))))
120: Else
121: angka = dua(CInt(VB.Mid(temp, 2, 1))) & miliar
122: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 9)))))
123: End If
124: Else
125: angka = tiga(CInt(VB.Left(temp, 1))) & ribu
126: End If
127: Case 12
128: If (VB.Mid(temp, 2, 1)) = 0 Then
129: angka = satu(CInt(VB.Left(temp, 1))) & ratus & miliar
130: Else
131: angka = satu(CInt(VB.Left(temp, 1))) & ratus
132: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 11)))))
133: End If
134: Case 13
135: angka = satu(CInt(VB.Left(temp, 1))) & triliun
136: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 12)))))
137: Case 14
138: If (VB.Left(temp, 1)) > 1 Then
139: If (VB.Mid(temp, 2, 1)) = 0 Then
140: angka = tiga(CInt(VB.Left(temp, 1))) & triliun
141: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 13)))))
142: Else
143: angka = tiga(CInt(VB.Left(temp, 1)))
144: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 14)))))
145: End If
146: ElseIf Int(CDbl(VB.Left(temp, 1))) = 1 Then
147: If (VB.Mid(temp, 2, 1)) = 0 Then
148: angka = dua(CInt(VB.Mid(temp, 2, 1))) & triliun
149: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 13)))))
150: Else
151: angka = dua(CInt(VB.Mid(temp, 2, 1))) & triliun
152: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 3, 12)))))
153: End If
154: End If
155: Case 15
156: If (VB.Mid(temp, 2, 1)) = 0 Then
157: angka = satu(CInt(VB.Left(temp, 1))) & ratus & triliun
158: Else
159: angka = satu(CInt(VB.Left(temp, 1))) & ratus
160: angka = angka & GetFigures(CStr(Int(CDbl(VB.Mid(temp, 2, 14)))))
161: End If
162: End Select
163: Catch
164: MessageBox.Show("Terdapat kesalahan cek lagi angka yang anda inputkan", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
165: End Try
166: GetFigures = Replace(angka, "satu ratus", "seratus")
167: GetFigures = Replace(GetFigures, "satu ribu", "seribu")
168: End Function
169: End Class
Lalu coding ini di Form1:
1: Imports CrystalDecisions.Shared
2: Imports CrystalDecisions.CrystalReports.Engine
3: Public Class Form1
4:
5: Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtJumlah.TextChanged
6: Dim obj As New Terbilang
7: txtTerbilang.Text = obj.GetFigures(txtJumlah.Text) & " rupiah"
8: End Sub
9:
10: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
11: Dim cryRpt As New ReportDocument
12: cryRpt.Load(Application.StartupPath & "\CrystalReport1.rpt")
13:
14: ' Declare the parameter related objects.
15: Dim crParameterDiscreteValue As ParameterDiscreteValue
16: Dim crParameterFieldDefinitions As ParameterFieldDefinitions
17: Dim crParameterFieldLocation As ParameterFieldDefinition
18: Dim crParameterValues As ParameterValues
19:
20: ' Mengambil collection parameter dari report
21: crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
22:
23: 'Setting value untuk setiap parameter yang digunakan
24: crParameterFieldLocation = crParameterFieldDefinitions.Item("jumlah")
25: crParameterValues = crParameterFieldLocation.CurrentValues
26: crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue
27: crParameterDiscreteValue.Value = txtJumlah.Text
28: crParameterValues.Add(crParameterDiscreteValue)
29: crParameterFieldLocation.ApplyCurrentValues(crParameterValues)
30:
31: crParameterFieldLocation = crParameterFieldDefinitions.Item("terbilang")
32: crParameterValues = crParameterFieldLocation.CurrentValues
33: crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue
34: crParameterDiscreteValue.Value = txtTerbilang.Text
35: crParameterValues.Add(crParameterDiscreteValue)
36: crParameterFieldLocation.ApplyCurrentValues(crParameterValues)
37:
38: ' Tampilkan report pada viewer
39: Form2.Show()
40: Form2.CrystalReportViewer1.ReportSource = cryRpt
41: End Sub
42: End Class
Untuk source code nya bisa di download disini
admin,tolong bantuin gw donk.. gw udah coba download dan pake source code yg admin ajarin.. terbilangnya muncul.. tapi masih ada masalah..
contohnya : klo gw ketik 100000 harusnya kan "seratus ribu rupiah" tapi yg muncul cuma "seratus rupiah" klo ketik 120000 baru betul.
dan 1 lagi,klo gw ketik 120000000,yg tampil malah "seratus juta dua puluh juta"
tolong di carikan solusinya plsss..
dibalas yah.. tq