11 May 2008

Membatasi Fungsi Keyboard

Saat membuat sebuah aplikasi dengan berbasiskan database salah satu hal yang sangat penting untuk diperhatikan adalah validasi data. Apa yang terjadi bila tipe data yang diinputkan oleh user ternyata tidak cocok dengan tipe data yang telah diberikan pada database ? Tentunya akan terjadi kesalahan karena tipe data tidak valid.

Untuk validasi nilai angka dan huruf saja mungkin tidaklah sulit kita bias menggunakan perintah “isnumeric” untuk validasi angka dan “not isnumeric” untuk validasi karakter huruf. Namun cara ini saya nilai tidaklah efektif karena apabila dalam satu textbox yang kita validasi berisi gabungan dari huruf dan angka maka validasi yang kita gunakan menjadi tidak berguna.

Berikut ini saya berikan cara untuk membatasi inputan dari user sesuai dengan karakter yang kita inginkan :


Private Sub text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then
MsgBox “Anda baru menekan tombol Enter”
End If

If InStr("0123456789,", Chr(KeyAscii)) = 0 Then
If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If
End If

End Sub

Fungsi yang saya gunakan untuk membatasi input dari user adalah perintah InStr. Dengan perintah ini maka user hanya dapat menekan tombol-tombol pada keyboard sesuai dengan yang kita izinkan, pada contoh saya diatas, saya hanya mengizinkan atau mengaktifkan tombol “0123456789,” pada keyboard yang telah memiliki nilai ACSII tersendiri. Apabila user mengetikkan selain “0123456789,” maka aplikasi tidak akan merespon dan tidak akan ditampilkan pada textbox. Lalu bagaimana bila kita hanya boleh mengizinkan user untuk memasukkan huruf kecil saja maka kita bias mengganti code tadi menjadi :

InStr("abcde s.d. z", Chr(KeyAscii)) = 0

Dan berlaku untuk karakter lainnya.
Lalu apa fungsi dari code dibawahnya :

If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If

Code ini untuk mengizinkan user menggunakan tombol Backspace (vbKeyBack) untuk memperbaiki data yang ditelah dimasukkan.
Kelebihan dari code ini adalah untuk mencegah user usil dengan memasukkan code tertentu yang bisa digunakan untuk membobol database yang ada. Terutama bila menggunakan login yang datanya diambil dari database.

5 comments:

Anonymous said...

Terimakasih untuk artikelnya, sangat membantu untuk pemula.

Anonymous said...

THANK!!!!

Anonymous said...

Thank Bro.. InStr("abcde s.d. z", Chr(KeyAscii)) = 0 KOk Musti = 0

Anonymous said...

kalo tuk vb 2008 gimna yah codingnya ???

Anonymous said...

wktu d running
Kok error y?
Expected then or go to katanya
Pdhal kodenya dah sesuai

 
>