Modifikasi melalui kontrol DataGridView merupakan cara yang praktis dan sederhana. Disini anda tidak perlu melibakan banyak kontrol cukup menggunakan kontrol dDataGridView dan Button (Jika diperlukan). Seperti halnya Anda melakukan modifikasi melalui textbox kontrol DataGridView memungkinkan untuk diguanakan dalam menambah,mengubah,menghapus data. Oleh karena kita mengandalkan DataGridView untuk modifikasi data table, pastikan bahwa property ReadOnly bernilai false. Ketika property ini bernilai true maka DataGridView hanya boleh dibaca saja, akibatnya kode anda juga tidak akan bekerja. Untuk lebih jelasnya, buat project baru dan tambahkan beberapa kontrol seperti bagan berikut :
Label1
Text = Modifikasi Data Lewat DataGrid
DataGridView
Name = DataGridView1
Buuton1
Name =BtnSimpan

Text = &Simpan

Sehingga berbentuk seperti gambar berikut :


Lalu lengkapi program anda dengan kode dibawah ini :
Imports MySql.Data.MySqlClient
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim conn As MySqlConnection
    Dim adapter As MySqlDataAdapter
    Dim ds As New DataSet

    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        adapter.Dispose()
        conn.Dispose()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Constr As String
        Constr = "server=localhost;" & "user=root;" & "password='';" & "database=latihan1;"
        Dim sqlstr As String = "select * from anggota"
        adapter = New MySqlDataAdapter

        Try
            conn = New MySqlConnection(Constr)
            conn.Open()
            adapter.SelectCommand = New MySqlCommand(sqlstr, conn)
            Dim cb As MySqlCommandBuilder
            cb = New MySqlCommandBuilder(adapter)
            adapter.Fill(ds, "anggota")
            DataGridView1.DataSource = ds
            DataGridView1.DataMember = "anggota"
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
        'Penambahan Data

        Dim dschange As DataSet = New DataSet
        If (ds.HasChanges(DataRowState.Added)) Then
            'Menambahkan Record Yang Ditambahkan
            dschange = ds.GetChanges(DataRowState.Added)
            Dim rowchange As Integer
            rowchange = adapter.Update(dschange, "anggota")
            If (rowchange > 0) Then
                MessageBox.Show(rowchange.ToString() & " Record Berhasil Dimasukan")
            End If
        End If

        'Pengubahan Data
        If (ds.HasChanges(DataRowState.Modified)) Then
            dschange = ds.GetChanges(DataRowState.Modified)
            Dim Rowchange As Integer
            Rowchange = adapter.Update(dschange, "anggota")
            If (Rowchange > 0) Then
                MessageBox.Show(Rowchange.ToString() & " Record Berhasil diubah")
            End If
        End If

        'Penghapusan Data
        If (ds.HasChanges(DataRowState.Deleted)) Then
            dschange = ds.GetChanges(DataRowState.Deleted)
            Dim Rowchange As Integer
            Rowchange = adapter.Update(dschange, "anggota")
            If (Rowchange > 0) Then
                MessageBox.Show(Rowchange.ToString() & " Record Berhasil dihapus")
            End If
        End If

        'Menerapkan perubahan
        ds.AcceptChanges()

        'Refress Datagrid
        DataGridView1.Refresh()
    End Sub
End Class
Agar proses modifikasi dapat dilakukan dengan praktris, kita memerlukan objek Mysql Command Builder. Fungsinya untuk mrndapatkan data yang singkron antara dataset dengan data di dalam data aslinya. Pada prinsipnya operasi penambahan , operasi pengubahan ,operasi penghapusan hampir sama ,hanya status operasi yang membedakan. Perhatikan potongan kode penambahan berikut :

Dim dschange As DataSet = New DataSet
        If (ds.HasChanges(DataRowState.Added)) Then
            'Menambahkan Record Yang Ditambahkan
            dschange = ds.GetChanges(DataRowState.Added)
            Dim rowchange As Integer
            rowchange = adapter.Update(dschange, "anggota")
            If (rowchange > 0) Then
                MessageBox.Show(rowchange.ToString() & " Record Berhasil Dimasukan")
            End If
        End If
Setelah objek dataset menampung table seperti yang ditampilkan pada DataGridView, kita menciptakan objek dataset baru. Tujuannya untuk menampung record yang ditambah, diubah, serta dihapus dari dataset pertama.
Sebagai contoh, Anda melakukan penambahan data, program akan memeriksa penambahan melalui method HasChange dengan parameter status, yaitu DataRowState.Added. Langkah berikutnya mengisikan record baru ke dalam objek dataset kedua, dan terakhir menerapkan perubahan ke tabel melalui method Update. Begitu pula halnya dengan pengubahan dan penghapusan, Anda cukup memeriksa status dari modifikasi data. Setelah status anda dapatkan, langkah selanjutnya tidak berbeda.
Gambar 1.2 Mengubah beberapa record sekaligus
Source codenya bisa di download disini
atau disini 

0 Komentar