Tuesday, June 12, 2012

Validasi Numeric Yang Disertai Decimal Symbol - Visual Basic 6

Bagaimana logika untuk validasi numerik yang disertai angka dibelakang koma? Nah, dengan menggabungkan posting sebelumnya dan sebelumnya, maka kita memperoleh logika untuk membuat validasi numeric yang memperbolehkan angka di belakang koma. Adapun kodenya adalah sebagai berikut:
Private Sub Text1_KeyPress(KeyAscii As Integer) 
Dim intDummyDecimalSymbol As Integer
intDummyDecimalSymbol = IIf(InStr(1, Text1.Text, Chr(GetDecimalSymbol)) = 0, GetDecimalSymbol, 0)
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8 Or KeyAscii = 45 Or KeyAscii = intDummyDecimalSymbol) Then KeyAscii = 0
End Sub

Private Function
GetDecimalSymbol() As Integer
'akan memperoleh 44 untuk koma (,) dan 46 untuk (.) dan lain sebagainya.
GetDecimalSymbol = Asc(Mid$(1 / 2, 2, 1))
End Function

Kode di atas akan sangat merepotkan, apabila harus memvalidasi banyak TextBox. Maka buatlah menjadi sederhana dengan menyimpannya pada module agar dapat diakses oleh seluruh form.
'Simpan dalam module 
Public Function GetNumericAndDecimal(txt As TextBox, Keyascii As Integer) As Integer
Dim
intDummyDecimalSymbol As Integer
intDummyDecimalSymbol = IIf(InStr(1, txt.Text, Chr(GetDecimalSymbol)) = 0, GetDecimalSymbol, 0)
If Not ((Keyascii >= 48 And Keyascii <= 57) Or Keyascii = 8 Or Keyascii = 45 Or Keyascii = intDummyDecimalSymbol) Then
GetNumericAndDecimal = 0
Else
GetNumericAndDecimal = Keyascii
End If
End Function

Public Function
GetDecimalSymbol() As Integer
'akan memperoleh 44 untuk koma (,) dan 46 untuk (.) dan lain sebagainya.
GetDecimalSymbol = Asc(Mid$(1 / 2, 2, 1))
End Function

Contoh penggunaan:
Private Sub Text1_KeyPress(KeyAscii As Integer) 
KeyAscii = GetNumericAndDecimal(Text1, KeyAscii)
End Sub