jump to navigation

Konversi Nilai Menjadi kalimat Terbilang Thu - Jun 22, 2000

Posted by supriyatna in Programming, Windows.
Tags: , ,
trackback

Untuk anda yang berkutat pada pembuatan sistem keuangan, seperti penagihan, payroll atau sistem billing, sudah tentu membutuhkan fungsi penerjemah dari nilai numerik ke dalam kalimat terbilang. Tujuan pemakaian kalimat terbilang adalah untuk mencocokan nilai yang ada agar terhindar dari kekeliruan akibat keteledoran user (Human Error)

Untuk menghasilkan kalimat terbilang dibuat dua buah fungsi, yaitu fungsi Konversi() dan fungsi GetRatus() yang masing-masing memiliki tujuan sendiri.
Cara penggunaan fungsi ini adalah:

Label1.Caption = Konversi( txtTotalAmount )

Untuk lebih jelasnya, perhatikan potongan dari listing program dibawah ini.

Option Explicit

Public Function Konversi(ByVal nNilai As Currency) As String
  Dim Grade As Variant
  Dim strTerbilang As String
  Dim strPart As String
  Dim iGrade As Byte

  Grade = Array("MILYAR ", "JUTA ", "RIBU ", "")

  strTerbilang = ""
  If Len(CStr(nNilai)) > 12 Then
    strTerbilang = "Melewati batas konversi, " & _
    "supriyatna@mailandnews.com"
  Else
    strPart = Format(nNilai, String(12, "0"))

    For iGrade = 1 To 4
    If Val(Mid(strPart,(iGrade-1)*3+1,3)) > 0 Then
      strTerbilang = strTerbilang & _
        GetRatus(Mid(strPart,(iGrade-1)*3+1,3), iGrade)
      strTerbilang = strTerbilang & Grade(iGrade-1)
    End If
    Next iGrade
  End If

  ' Kembalikan nilai melalui nama fungsi-nya
  Konversi = strTerbilang
End Function

Fungsi selanjutnya, yaitu GetRatus() memiliki tugas untuk menterjemahkan bagian- bagian (Porting Value) dari nilai yang sebelumnya dipilah berdasarkan pecahan perseratus-an, fungsi ini akan mengembalikan nilai bertipe String.

Public Function GetRatus(ByVal strPart As String, _
  ByVal iGrade As Byte) As String
  Dim Angka1 As Variant, Angka2 As Variant
  Dim i As Integer
  Dim strHasil As String
  Dim nTemp As Byte

  Angka1 = Array("SATU ", "DUA ", "TIGA ", "EMPAT ", _
    "LIMA ", "ENAM ", "TUJUH ", "DELAPAN ", "SEMBILAN ")
  Angka2 = Array("RATUS ", "PULUH ", "")

  For i = 1 To 3
    nTemp = Val(Mid(strPart, i, 1))
    If nTemp = 1 Then
      If i = 1 Then
        strHasil = "SERATUS "
      ElseIf i = 2 Then

        i = i + 1
        nTemp = Val(Mid(strPart, i, 1))
        If nTemp = 0 Then
          strHasil = strHasil & "SEPULUH "
        ElseIf nTemp = 1 Then
          strHasil = strHasil & "SEBELAS "
        Else
          strHasil = strHasil & _
            Angka1(nTemp - 1) & "BELAS "
        End If

      ElseIf Val(strPart) = 1 And iGrade = 3 Then
        strHasil = strHasil & "SE"
      Else
        strHasil = strHasil & "SATU "
      End If
    ElseIf nTemp <> 0 Then
      strHasil = strHasil + Angka1(nTemp-1) + Angka2(i-1)
    End If
  Next i
  GetRatus = strHasil
End Function

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: