27 January 2016


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:

hijram mahjura said...

eit..eit2 syntax error in UPDATE statement ketika si save

hijram mahjura said...

misalkan saya punya kode kayak gini, penulisan yg bener gmn mbk?

RunQuery "UPDATE barang SET " & _
"kode = '" & txtkode.Text & "' " & _
"namabarang = '" & txtnama.Text & "' " & _
"harga = '" & txtharga.Text & "' " & _
"WHERE kode = '" & txtkode.Text & "'"

rani irsan said...

kurang koma

RunQuery "UPDATE barang SET " & _
"kode = '" & txtkode.Text & "', " & _
"namabarang = '" & txtnama.Text & "', " & _
"harga = '" & txtharga.Text & "' " & _
"WHERE kode = '" & txtkode.Text & "'"

hijram mahjura said...

mbak rani saya mau tanya klo mengolah data ( save,update,delete ) via datagrid langsung tanpa menggunakan textbox + di property ada button yg berisi data seperti combobox gmn ya? trims

rani irsan said...

bisa aja, di property datagrid nya allowaddnew, allowupdate, allowdelete nya = true
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.