Format dan Validasi Data Numeric pada Textbox VB6

Format dan Validasi Data Numeric pada Textbox VB6
Dalam membuat program aplikasi khususnya dengan VB6, penggunaan komponen untuk input data sangat penting untuk diperhatikan pada masalah format dan validasi sesuai dengan jenis atau tipe data yang diinginkan. Pada bagian ini saya akan mencoba memberikan pengalaman pada anda tentang bagaimana melakukan format sekaligus validasi input data jenis atau tipe numeric pada komponen Textbox.

Ada 3 (tiga) hal yang perlu diperhatikan pada saat kita melakukan hal tersebut diatas, yaitu pada saat event GotFocus, KeyPress dan LostFocus.

1. GotFocus
Pada saat event GotFocus komponen tersebut yang dilakukan adalah mengembalikan nilai asli dari angka dan membebaskan format pemisah ribuan yang ada, misalkan data 1,234,567 harus dirubah menjadi 1234567.

2. KeyPress
Pada saat event KeyPress komponen tersebut yang dilakukan adalah menyaring data input dari keyboard yang bisa digunakan, yaitu angka dan titik desimal. Untuk melakukan hal tersebut kita buat sebuah fungsi yang ditulis dalam Module yang akan menyeleksi data input, jika tidak sesuai validasi data, maka karakter yang diinput dibatalkan. Ada 2 fungsi yang saya buat yaitu untuk Integer dan Desimal.

3. LostFocus
Pada saat event LostFocus komponen tersebut yang dilakukan adalah menampilkan data dengan format numeric yang dikehendaki. Misalkan "###,##0" atau "###,##0.00". Sebelum data diformat terlebih dahulu data harus dibebaskan dari format permisah yang ada.

Berikut contoh code seperti contoh form diatas dengan 2 komponen Textbox Stok Akhir dan Harga Jual:

Option Explicit

Private Sub txtHargaJual_GotFocus()
    txtHargaJual.Text = AmbilDataNumeric(txtHargaJual.Text)
    txtHargaJual.SelStart = 0
    txtHargaJual.SelLength = Len(Trim(txtHargaJual.Text))
End Sub

Private Sub txtHargaJual_KeyPress(KeyAscii As Integer)
    ValidasiInteger KeyAscii, txtHargaJual
End Sub

Private Sub txtHargaJual_LostFocus()
    txtHargaJual.Text = Format(AmbilDataNumeric(txtHargaJual.Text), "###,##0")
End Sub

Private Sub txtStokAkhir_GotFocus()
    txtStokAkhir.Text = AmbilDataNumeric(txtStokAkhir.Text)
    txtStokAkhir.SelStart = 0
    txtStokAkhir.SelLength = Len(Trim(txtStokAkhir.Text))
End Sub

Private Sub txtStokAkhir_KeyPress(KeyAscii As Integer)
    ValidasiDecimal KeyAscii, txtStokAkhir
End Sub

Private Sub txtStokAkhir_LostFocus()
    txtStokAkhir.Text = Format(AmbilDataNumeric(txtStokAkhir.Text), "###,##0.00")
End Sub

Untuk contoh Fungsi validasi desimal dan integer serta fungsi membebaskan data dari format ribuan yang ditulis dalam mobule adalah sebagai berikut:

Option Explicit

'-------------------------------------------------
' Ambil Data Dalam Format Numeric/Angka
'-------------------------------------------------
Public Function AmbilDataNumeric(cData As String, Optional nPanjang As Integer) As String
    If IsNull(nPanjang) Then nPanjang = 15
    AmbilDataNumeric = Trim(Format(cData, String(nPanjang, 15)))
End Function

'-------------------------------------------------
' Validasi Input Untuk Tipe Desimal
'-------------------------------------------------
Public Sub ValidasiDecimal(ByRef KeyAscii, TextObject As Object)
    If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And Chr(KeyAscii) <> "." And Chr(KeyAscii) <> "-" Then
        KeyAscii = 0
    Else
        If Chr(KeyAscii) = "." Then
            If InStr(TextObject.Text, ".") <> 0 Then
               KeyAscii = 0
            End If
        End If
        
        If Chr(KeyAscii) = "-" Then
           If InStr(TextObject.Text, "-") <> 0 Then
               KeyAscii = 0
           End If
        End If
    End If
End Sub

'-------------------------------------------------
' Validasi Input Untuk Tipe Integer
'-------------------------------------------------
Public Sub ValidasiInteger(ByRef KeyAscii, TextObject As Object)
    If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And Chr(KeyAscii) <> "-" Then
        KeyAscii = 0
    Else
        If Chr(KeyAscii) = "-" Then
           If InStr(TextObject.Text, "-") <> 0 Then
               KeyAscii = 0
           End If
        End If
    End If
End Sub

Untuk contoh program dengan penjelasan diatas, anda dapat download source code disini. Semoga artikel ini bermanfaat bagi anda.

Previous
Next Post »