24 June 2015


Artikel ini merupakan serial CRUD VB.NET Ms. Access lanjutan dari Part 1.

Tahap selanjutnya kita akan membuat fasilitas edit/mengubah data yang sudah ada. User akan mengedit data dengan memilih row yang ada di datagridview, kemudian double klik untuk menampilkan data yang akan di edit di control input (textbox). Kita tambahkan code berikut pada event grdData_CellMouseDoubleClick.

Private Sub grdData_CellMouseDoubleClick(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
    Handles grdData.CellMouseDoubleClick

    txtCode.Text = grdData.CurrentRow.Cells(0).Value
    txtName.Text = grdData.CurrentRow.Cells(1).Value

    tbrEdit.Enabled = False
    txtCode.ReadOnly = True

End Sub


Code txtCode.ReadOnly = True ditambahkan untuk mengunci textbox kode agar tidak dapat diedit karena merupakan primary key. Selain dapat langsung double klik pada grid, user juga dapat memilih row data kemudian klik tombol Edit, maka perlu procedure yang sama pada event tbrEdit_Click. Tapi kita tidak akan mengetik ulang code melainkan memanggil sub procedure event CellMouseDoubleClick seperti berikut:
Private Sub tbrEdit_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles tbrEdit.Click

    grdData_CellMouseDoubleClick(Nothing, Nothing)

End Sub


Oiya sebelum lanjut ke Saving perubahan, kita tambahkan dulu code di event tbrCancel_Click dulu yah. Karena procedure ini akan dipanggil beberapa kali. Fungsinya adalah untuk membersihkan control input, refresh ulang data, dan membatalkan proses input baru/edit selama belum di Save.

Private Sub tbrCancel_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles tbrCancel.Click
    txtCode.Text = String.Empty
    txtName.Text = String.Empty
    tbrEdit.Enabled = True
    txtCode.ReadOnly = False
    Data_Load()
End Sub


Code tbrEdit.Enabled = False sebagai parameter pembeda, apakah status input sedang input baru atau sedang edit data. Karena untuk menyimpan perubahan menggunakan event yang sama yaitu tbrSave_Click. Kita akan mengubah dan menambahkan beberapa code pada event ini. (Rani tandai dengan highlight perubahannya yah)
Private Sub tbrSave_Click(sender As Object, _
        e As EventArgs) Handles tbrSave.Click

 Dim myCommand As New OleDbCommand
 Dim SQL As String
 Try
     If Not
con.State = ConnectionState.Open Then Open_Koneksi()
     If tbrEdit.Enabled = True Then
       SQL = "INSERT INTO kategori (kodekategori, namakategori) VALUES " & _
             "('" & txtCode.Text & "', '" & txtName.Text & "')"
     Else
       SQL = "UPDATE kategori SET namakategori = '" & txtName.Text & "' " & _
                "WHERE kodekategori = '" & txtCode.Text & "'"
     End If


     myCommand.Connection = con
     myCommand.CommandText = Sql
     myCommand.ExecuteNonQuery()

    
If tbrEdit.Enabled = True Then
         MsgBox("Data baru tersimpan")
     Else
         MsgBox("Perubahan tersimpan")
     End If

     tbrCancel_Click(Nothing, Nothing)


     con.Close()
   Catch myerror As OleDbException
       MessageBox.Show("Error: " & myerror.Message)
 Finally
     con.Dispose()
 End Try
End Sub


Mari kita coba run lagi.

Lanjut ke Part 3 tentang Delete dan Close Form.

Click here if you like this article.


5 comments:

Rahmadani Setiawan said...

mbak, aku udah berhasil cobain coding diatas, dah bisa simpen data baru, tapi gak tau kenapa tiba2 data nya ilang lagi, kira2 kenapa ya ?

rani irsan said...

klo boleh tau, diliat dari mana klo code nya berhasil? udah dilihat ke database nya klo data bener2 pernah masuk?
trus ilang nya pas gimana?

Rahmadani Setiawan said...

udah ada notice berhasil pas save data, chek di database jg udah ada, klo gak salah pas ilang datanya itu muncul error 3159 'not a valid bookmark'

rani irsan said...

aneh juga, klo emang udah dibuka database access nya terus data nya udah sempet ke save. mungkin problem nya di database nya. agak susah emang nge trace error codingan orang ^_^

Zero Kifaco said...

Tutorialnya mantap. Makasih mis sangat membantu. Salam ngoding hh