Pertemuan 3 Validasi input data Pada saat kita bekerja dengan database, maka kita harus memastikan bahwa data yang diinput dari form yang akan disimpan dalam database harus valid. Validasi yang dimaksud meliputi : 1. Type data 2. Ukuran/size 3. Format data (khususnya tanggal) 4. Mengijinkan penyimpanan data kosong atau tidak 5. Data kembar Validasi tersebut berkaitan dengan struktur tabel yang digunakan. 1. Validasi tipe data a. Tipe data numerik Khususnya dalam input data menggunakan textbox, dapat diatur agar yang dapat diketikkan hanya angka, selain itu tidak dapat. Perintah ini dapat kita berikan pada event keypressed() Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii > 57 Or KeyAscii < 47 Then KeyAscii = 0 b. Semua isian dalam huruf kapital Hal ini digunakan untuk menyeragamkan data, dilakukan pada event keypressed() Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 2. Ukuran/size Pada saat program dijalankan muncul Error Salah satu sebabnya adalah ukuran data yang akan disimpan. Langkah penanganannya dapat kita cek antara desain/struktur tabel dengan data yang kita masukkan. Untuk membuat validasi agar ukuran data sesuai dengan struktur tabel, dapat kita lakukan dengan mengatur nilai property MaxLength pada object TextBox
Isikan nilai property MaxLength dengan nilai ukuran/size field yang bersesuaian pada tabel dimana data isian ini nantinya akan disimpan. 3. Format data tanggal Kita tahu bahwa ada beberapa format tanggal, antara lain dd/mm/yy, mm/dd/yy dan masih banyak lagi. Apabila form isian yang mengandung tanggal tidak kita validasi, maka kemungkinan kesalahan penulisan akan terjadi. Untuk mengantisipasi hal tersebut, salah satu cara dapat dilakukan dengan memilih isian menggunakan object DTPicker. Apabila belum ada dalam toolbox, dapat dimunculkan melalui menu Project Components kemudian centang Microsoft Windows Common Controls-2.6.0 kemudian klik Apply Sehingga pada saat input data tanggal tinggal kita pilih Untuk mengambil nilai inputan DTPicker, kita ambil nilai property value 4. Mengijinkan data kosong atau tidak
Ada kalanya kita harus memaksa user untuk mengisikan data, dikarenakan memang data tersebut wajib diisi. Misalnya pada saat mengisi data mahasiswa, NIM harus diisi dengan kata lain tidak boleh kosong. Untuk itu, pada saat membuat form input data kita harus pastikan bahwa data yang dibutuhkan diisi. Hal tersebut dapat kita lakukan dengan berbagai cara, misalnya dapat diletakkan pada tombl simpan, yaitu dengan memeriksa isian sebelum disimpan. Bisa juga pada event lost_focus pada sebuah object. Untuk penempatan program pengecekan tergantung masing-masing programmer disesuaikan dengan kebutuhannya. Contoh : Private Sub txtkode_lostfocus() If txtkode.text = "" Then pesan = MsgBox("Kode masih kosong, wajib diisi", vbokonly, "Perhatian") Untuk itu, perlu juga kita buat petunjuk kepada user agar program yang kita buat lebih userfriendly. Salah satu caranya dengan memanfaatkan property ToolTipText yang terdapat pada object TextBox. Contoh : Sehingga hasilnya menjadi : 5. Data kembar Validasi data kembar digunakan untuk mengantisipasi agar data yang diinputkan tidak sama, terutama data yang masuk kategori key field. Salah satu contoh adalah pada saat menginputkan data mahasiswa, NIM tidak boleh sama. Untuk itu harus dibuat validasi agar data mahasiswa yang diinputkan tidak mempunyai NIM yang sama. Hal ini dapat kita lakukan dengan menggunakan program pencarian. kembarrs.open "select * from customer where kode = '" & txtkode.text & "'", sambung, adopenstatic, adlockoptimistic If kembarrs.recordcount > 0 Then
pesan = MsgBox("Data dengan kode '" & txtkode.text & "' sudah ada", vbokonly, "Perhatian") kembarrs.close Latihan : 1. Buka project PBO_Lanjut_NIM Saudara 2. Tambahkan 1 form, beri nama Latihan3_NIM simpan dalam folder nama saudara dengan nama Latihan3_NIM 3. Buatlah form dengan tampilan sebagai berikut : 4. Buka database saudara, tambahkan 1 tabel beri nama Customer dengan struktur tabel sebagai berikut : 5. Buatlah program untuk input data tersebut, dengan validasi : a. Kode tidak boleh sama dengan yang sudah tersimpan b. Semua isian harus diisi, khusus isian dengan check box minimal dipilih salah satu c. Jumlah karyawan hanya boleh diisi dengan angka d. Tombol Simpan digunakan untuk menyimpan data isian e. Tombol Batal digunakan untuk mengosongkan isian f. Tombol keluat digunakan untuk keluar dari program 6. Kode program (sebagian) Dim sambung As New ADODB.Connection Dim ambilrs As New ADODB.Recordset Dim kembarrs As New ADODB.Recordset
Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) Private Sub cmdsimpan_click() If txtkode.text = "" Then pesan = MsgBox("Kode belum diisi, harap diisi dulu!", vbokonly, "Perhatian") ElseIf txtnama.text = "" Then pesan = MsgBox("Nama belum diisi, harap diisi dulu!", vbokonly, "Perhatian") txtnama.setfocus ElseIf txtalamat.text = "" Then pesan = MsgBox("Alamat belum diisi, harap diisi dulu!", vbokonly, "Perhatian") txtalamat.setfocus ElseIf txtkota.text = "" Then pesan = MsgBox("Kota belum diisi, harap diisi dulu!", vbokonly, "Perhatian") txtkota.setfocus ElseIf cmbpropinsi.text = "" Then pesan = MsgBox("Propinsi belum dipilih, harap dipilih dulu!", vbokonly, "Perhatian") cmbpropinsi.setfocus ElseIf txtjml.text = "" Then pesan = MsgBox("Jumlah Karyawan belum diisi, harap diisi dulu!", vbokonly, "Perhatian") txtjml.setfocus ElseIf (optwni.value = False And optwna.value = False) Then pesan = MsgBox("Kewarganegaraan belum dipilih, harap dipilih dulu!", vbokonly, "Perhatian") optwni.setfocus ElseIf (optsilver.value = False And optgold.value = False) Then pesan = MsgBox("Keanggotaan belum dipilih, harap dipilih dulu!", vbokonly, "Perhatian") optsilver.setfocus ElseIf (chkmakan.value = vbunchecked And chkminum.value = vbunchecked And chkpakaian.value = vbunchecked And chkelektronik.value = vbunchecked And chkmebel.value = vbunchecked) Then pesan = MsgBox("Produk belum dipilih, harap dipilih dulu!", vbokonly, "Perhatian") chkmakan.setfocus Else ambilrs.addnew ambilrs!kode = txtkode.text ambilrs!nama = txtnama.text ambilrs!alamat = txtalamat.text ambilrs!kota = txtkota.text ambilrs!propinsi = cmbpropinsi.text If optwni.value = True Then ambilrs!kewarganegaraan = "1" ElseIf optwna.value = True Then ambilrs!kewarganegaraan = "0" Else pesan = MsgBox("Kewarganegaraan harus diisi, tidak boleh kosong", vbokonly, "Perhatian") ambilrs!tgl_gabung = dttgl.value If chkmakan.value = vbchecked Then ambilrs!produk1 = "1" ElseIf chkmakan.value = vbunchecked Then ambilrs!produk1 = "0" If chkminum.value = vbchecked Then ambilrs!produk2 = "1"
ElseIf chkminum.value = vbunchecked Then ambilrs!produk2 = "0" If chkpakaian.value = vbchecked Then ambilrs!produk3 = "1" ElseIf chkpakaian.value = vbunchecked Then ambilrs!produk3 = "0" If chkelektronik.value = vbchecked Then ambilrs!produk4 = "1" ElseIf chkelektronik.value = vbunchecked Then ambilrs!produk4 = "0" If chkmebel.value = vbchecked Then ambilrs!produk5 = "1" ElseIf chkmebel.value = vbunchecked Then ambilrs!produk5 = "0" If optsilver.value = True Then ambilrs!jenis = "0" ElseIf optgold.value = True Then ambilrs!jenis = "1" ambilrs!jml_kry = Val(txtjml.Text) Private Sub Form_Load() sambung.cursorlocation = aduseclient sambung.connectionstring = "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "\data- 12345678.mdb" sambung.open ambilrs.open "select * from customer", sambung, adopenstatic, adlockoptimistic Set DGrid.DataSource = ambilrs Private Sub txtjml_keypress(keyascii As Integer) If KeyAscii > 57 Or KeyAscii < 48 Then KeyAscii = 0 Private Sub txtkode_lostfocus() If txtkode.text = "" Then pesan = MsgBox("Kode masih kosong, wajib diisi", vbokonly, "Perhatian") Else kembarrs.open "select * from customer where kode = '" & txtkode.text & "'", sambung, adopenstatic, adlockoptimistic If kembarrs.recordcount > 0 Then pesan = MsgBox("Data dengan kode '" & txtkode.text & "' sudah ada", vbokonly, "Perhatian") kembarrs.close