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 End If End Sub 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))) End Sub 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
www.ekomath93.wordpress.com
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 www.ekomath93.wordpress.com
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") txtkode.SetFocus End If End Sub
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
www.ekomath93.wordpress.com
pesan = MsgBox("Data dengan kode '" & txtkode.Text & "' sudah ada", vbOKOnly, "Perhatian") txtkode.SetFocus End If 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
www.ekomath93.wordpress.com
Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub Private Sub cmdsimpan_Click() If txtkode.Text = "" Then pesan = MsgBox("Kode belum diisi, harap diisi dulu!", vbOKOnly, "Perhatian") txtkode.SetFocus 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") End If ambilrs!tgl_gabung = dttgl.Value If chkmakan.Value = vbChecked Then ambilrs!produk1 = "1" ElseIf chkmakan.Value = vbUnchecked Then ambilrs!produk1 = "0" End If If chkminum.Value = vbChecked Then ambilrs!produk2 = "1"
www.ekomath93.wordpress.com
ElseIf chkminum.Value = vbUnchecked Then ambilrs!produk2 = "0" End If If chkpakaian.Value = vbChecked Then ambilrs!produk3 = "1" ElseIf chkpakaian.Value = vbUnchecked Then ambilrs!produk3 = "0" End If If chkelektronik.Value = vbChecked Then ambilrs!produk4 = "1" ElseIf chkelektronik.Value = vbUnchecked Then ambilrs!produk4 = "0" End If If chkmebel.Value = vbChecked Then ambilrs!produk5 = "1" ElseIf chkmebel.Value = vbUnchecked Then ambilrs!produk5 = "0" End If If optsilver.Value = True Then ambilrs!jenis = "0" ElseIf optgold.Value = True Then ambilrs!jenis = "1" End If ambilrs!jml_kry = Val(txtjml.Text) End If End Sub Private Sub Form_Load() sambung.CursorLocation = adUseClient sambung.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "\data12345678.mdb" sambung.Open ambilrs.Open "select * from customer", sambung, adOpenStatic, adLockOptimistic Set DGrid.DataSource = ambilrs End Sub Private Sub txtjml_KeyPress(KeyAscii As Integer) If KeyAscii > 57 Or KeyAscii < 48 Then KeyAscii = 0 End If End Sub Private Sub txtkode_LostFocus() If txtkode.Text = "" Then pesan = MsgBox("Kode masih kosong, wajib diisi", vbOKOnly, "Perhatian") txtkode.SetFocus 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") txtkode.SetFocus End If kembarrs.Close End If End Sub
www.ekomath93.wordpress.com