Beranjak dari pembahasan input data baru, bahasan selanjutnya adalah edit/update data. Masih berlanjut dari artikel sebelumnya.
Tambahkan code di event grid grdData_DblClick
Private Sub grdData_DblClick()
On Error GoTo errHandler
'jika di grid tidak ada data
If rsData.RecordCount = 0 Then Exit Sub
With Me
.txtCode.Text = rsData!categorycode
.txtName.Text = rsData!categoryname
.txtCode.Enabled = False
End With
Exit Sub
errHandler:
MsgBox Err.Number & ":" & Err.Description
End Sub
txtCode.Enabled = False, karena primary key sebaiknya tidak diubah. Dan properti ini akan menjadi parameter pembeda apakah proses saving akan menginput data baru atau update data yang sudah ada. Ubah code di event cmdSave_Click.
Private Sub cmdSave_Click()
On Error GoTo errHandler
'Validasi input data
If txtCode.Text = "" Then MsgBox "Kode belum diisi": Exit Sub
If txtName.Text = "" Then MsgBox "Nama belum diisi": Exit Sub
If txtCode.Enabled = True Then
'query insert ke database
RunQuery "INSERT INTO category " & _
"(categorycode, categoryname) VALUES " & _
"('" & txtCode.Text & "', " & _
"'" & txtName.Text & "')"
'pesan konfirmasi input berhasil
MsgBox "Data baru telah ditambahkan"
Else
'query update ke database
RunQuery "UPDATE category SET " & _
"categoryname = '" & txtName.Text & "' " & _
"WHERE categorycode = '" & txtCode.Text & "'"
'pesan konfirmasi update berhasil
MsgBox "Perubahan data telah tersimpan"
End If
'membersihkan control input
cmdCancel_Click
Exit Sub
errHandler:
MsgBox Err.Number & ":" & Err.Description
End Sub
Kembalikan properti enabled pada txtCode saat membersihkan control
Private Sub cmdCancel_Click()
Load_Data
txtCode.Enabled = True
txtCode.Text = ""
txtName.Text = ""
End Sub
Untuk menampilkan data yang akan diedit, selain dengan double klik pada grid, juga dapat dilakukan dengan klik tombol Edit. Karena itu panggil Event grdData_DblClick di Event cmdEdit_Click.
Private Sub cmdEdit_Click()
grdData_DblClick
End Sub
Setelah itu Run project, dan cek apakah fungsi edit berjalan dengan baik. Double click baris yang akan diedit. Maka akan ditampilkan di control input/edit.
Kemudian ubah nama kategori (primary key di set tidak bisa diedit), kemudian klik Save.
Jika perubahan berhasil maka akan muncuk pesan.
Perubahan akan tampil di datagrid.
Click here if you like this article.
5 Comments
RunQuery "UPDATE barang SET " & _
"kode = '" & txtkode.Text & "' " & _
"namabarang = '" & txtnama.Text & "' " & _
"harga = '" & txtharga.Text & "' " & _
"WHERE kode = '" & txtkode.Text & "'"
RunQuery "UPDATE barang SET " & _
"kode = '" & txtkode.Text & "', " & _
"namabarang = '" & txtnama.Text & "', " & _
"harga = '" & txtharga.Text & "' " & _
"WHERE kode = '" & txtkode.Text & "'"
trus saat query ambil data nya langsung dari grid.
cara seperti ini bisa2 aja, dan saya pernah 1 kali bikin. cuman saya sendiri MENGHINDARI cara seperti ini.
karena berhadapan dengan 2 pilihan, control tambahan semacam protoview (bukan bawaan visual basic) atau pakai datagrid bawaan visual basic tapi dengan cara "berdarah2" hehe... riskan error dan memperbesar human error.