Part 1 | Part 2 | Part 3 | Part 4
Artikel ini lanjutan dari Part 1 ini yah.
Next step, kita mau buat fasiltas buat edit/mengubah data yang sudah ada. Bagaimana user mengedit data? Pertama mereka akan memilih data yang ada di grid, kemudian melakukan double klik untuk menampilkan data yang akan di edit di control input (textbox). Maka kita akan membuat 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
Kita menambahkan txtCode.ReadOnly = True, untuk mengunci 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(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles tbrSave.Click
Dim myCommand As New MySqlCommand
conn = New MySqlConnection()
conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
conn.Open()
If tbrEdit.Enabled = True Then
SQL = "INSERT INTO class (classcode, classname) VALUES " & _
"('" & txtCode.Text & "', '" & txtName.Text & "')"
Else
SQL = "UPDATE class SET classname = '" & txtName.Text & "' " & _
"WHERE classcode = '" & txtCode.Text & "'"
End If
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
If tbrEdit.Enabled = True Then
MsgBox("Data baru tersimpan")
Else
MsgBox("Perubahan tersimpan")
End If
tbrCancel_Click(Nothing, Nothing)
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Sekarang mari kita coba lagi.
Jangan kemana-mana dulu, Part 3 masih lanjut membahas soal Delete dan Close Form.
Tutorial VB.NET dan MySQL Lainnya
Lihat juga tutorial ini via youtube yah! ^_^
3 Comments
jika field kode dalam database berperan sebagai primary key sebaiknya tidak diubah. tapi klo kode bukan primary key (misal primary key nya id) silahkan saja ubah query nya. Contoh: (silahkan sesuaikan dengan case Anda)
SQL = "UPDATE class SET classcode= '" & txtCode.Text & "', classname = '" & txtName.Text & "' WHERE id= '" & txtId.Text & "'"