19 Oktober 2012

[VB.Net] Binding data ke form lain melalui DataGridView


Bismillahirahmanirohim,
Dalam kesempatan ini, saya akan sedikit membahas tentang keluarga .Net lainnya yaitu Visual Basic.Net, yaitu cara untuk
membinding data dari form 1 ke form lainnya tetapi melalui DataGridView, biasanya DataGridView berisi replika salah satu tabel
dalam database yang kita binding ke form, akan tetapi kekurangannya adalah semakin banyak data akan semakin
banyak *** memory yang dibutuhkan.
berikut gambar hasil dari aplikasinya :D caranya dengan double click pada record yang ada padaDataGridView
a
Berikut langkah-langkahnya :
1. Buat New Project pada Visual Studio 2010
b 
Name dan Solution name nya bebas, misalkan saya tulis "CRUD" lalu klik OK
2. Buat databasenya, berikut langkah-langkahnya
connect dulu, saya menggunakan Microsoft SQL Server 2008 R2 untuk databasenya 
v 
databasenya saya beri nama "mhs" dengan tabel yang beri nama "t_mhs" yang berisi 4 field, seperti dibawah ini 
re 
Jangan lupa disave :D 
3. buat koneksi databasenya, saya menggunakan konsep ADO.NET, tidak menggunakan modul dalam koneksi databasenya, karena cara ini adalah cara tercepat,
berikut caranya,klik kanan pada project kita,lalu pilih properties
egi 
lalu pilih tab settings, beri Name, beri nama bebas misalkan saya memberi nama "RegiePahlewi", typenya dibuat menjadi
Connection stringscopenya menjadi Application setelah itu valuenya kita browse
regie 
browse 
 
Tulis Server namenya, lalu pilih databasenya 
 
kita dapat tes koneksi databasenya
 
Oke koneksinya sukses, lalu pilih button OK 
b
4. Sekarang buat formnya, seperti ini, (Form 1)
 
berikut adalah source codenya 
Imports System.Data.SqlClient
Imports System.Data
'karena kita tidak menggunakan module dalam koneksi ke database, kita harus membuat global variabel nya, dari koneksi, command, dataset, dan
DataAdapter

Public Class Form1
    Private conn As SqlConnection
    Private cmd As SqlCommand
    Private cmp As SqlCommand
    Private da As SqlDataAdapter
    Private ds As DataSet

   
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'MhsDataSet.t_mhs' table. You can move, or remove it, as needed.
        Me.T_mhsTableAdapter.Fill(Me.MhsDataSet.t_mhs)
        Dim regie = My.Settings.RegiePahlewi 'memanggil settings yg kita buat sebelumnya
        conn = New SqlConnection(regie) 'ini adalah koneksi ke database yang sebelumnya kita buat di properties tadi
        Me.Button1.Enabled = False 'button satu ini adalah button simpan, ini kebiasaan saya, tidak pernah mengganti nama button, saya buat enable dulu :D
        Me.DataGridView1.Select()
    End Sub

    Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged
        Dim a As Integer  'membuat variabel lokal
        a = Val(TextBox2.Text)
        If a >= 1 Then
            Me.Button1.Enabled = True 'membuat enable button simpan
        End If
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim query = "INSERT INTO t_mhs (npm, nama,jurusan,angkatan)values(@npm, @nama, @jurusan, @angkatan ) " 'query
        cmd = New SqlCommand(query, conn)
        Try
            conn.Open()
            cmd.Parameters.AddWithValue("@nama", TextBox1.Text)
            cmd.Parameters.AddWithValue("@npm", TextBox2.Text)
            cmd.Parameters.AddWithValue("@jurusan", TextBox3.Text)
            cmd.Parameters.AddWithValue("@angkatan", TextBox4.Text)

            cmd.ExecuteNonQuery()
            MessageBox.Show("Data berhasil ditambah !")
        Catch ex As Exception
            MessageBox.Show("Error :" & ex.Message)

        Finally
            cmd.Dispose()
            conn.Close()


        End Try

        Me.TextBox1.Clear() 'Nama
        Me.TextBox2.Clear() 'NPM
        Me.TextBox3.Clear() 'Jurusan
        Me.TextBox4.Clear() 'Angkatan
        Me.DataGridView1.Refresh()
        Form2.Close()

    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.TextBox1.Clear()
        Me.TextBox2.Clear()
        Me.TextBox3.Clear()
        Me.TextBox4.Clear()
    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Me.Close()
    End Sub

    Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
'Saya membuat event, saya record yang ada pada datagridview double klik, lalu akan kluar form edit

        If MessageBox.Show("Apakah Anda ingin mengubah data ?", "Konfirmasi",
                           MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
            Exit Sub
        End If
        Form2.Show()

        Form2.TextBox2.Text = DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(0).Value.ToString()
        
    End Sub
End Class 
5. Form 2 untuk form edit, buat seperti form di atas, akan tetapi datagridviewnya jangan didrag ke formnya (lupa gak print screen) :D
Imports System.Data.SqlClient
Imports System.Data

Public Class Form2
    Private conn As SqlConnection
    Private cmd As SqlCommand
    Private cmp As SqlCommand
    Private da As SqlDataAdapter
    Private ds As DataSet

    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim regie = My.Settings.RegiePahlewi 'memanggil settings yg kita buat sebelumnya
        conn = New SqlConnection(regie) 'ini adalah koneksi ke database yang sebelumnya kita buat di properties tadi
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim query = "update t_mhs set nama=@nama, jurusan=@jurusan, angkatan=@angkatan "
        cmd = New SqlCommand(query, conn)
        Try
            conn.Open()
            cmd.Parameters.AddWithValue("@nama", TextBox1.Text)
            cmd.Parameters.AddWithValue("@jurusan", TextBox3.Text)
            cmd.Parameters.AddWithValue("@angkatan", TextBox4.Text)

            cmd.ExecuteNonQuery()
            MessageBox.Show("Data dengan NPM " & TextBox2.Text & " Berhasil diupdate")
        Catch ex As Exception
            MessageBox.Show("Error :" & ex.Message)

        Finally
            cmd.Dispose()
            conn.Close()
        End Try
        Me.Close()
    End Sub

    Private Sub TextBox2_TextChanged_1(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged
        Try
            If Not TextBox2.Text = "" Then
                TextBox1.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
                da = New SqlClient.SqlDataAdapter("SELECT * FROM t_mhs WHERE npm ='" & TextBox2.Text & "'", conn)
                Dim dttampil As New DataTable
                dttampil.Clear()
                da.Fill(dttampil)

                TextBox1.DataBindings.Add("Text", dttampil, "nama")
                TextBox2.DataBindings.Add("Text", dttampil, "npm")
                TextBox3.DataBindings.Add("Text", dttampil, "jurusan")
                TextBox4.DataBindings.Add("Text", dttampil, "angkatan")

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Perhatian")
        End Try

    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.TextBox1.Clear()
        Me.TextBox2.Clear()
        Me.TextBox3.Clear()
        Me.TextBox4.Clear()
        Me.Close()

    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Me.Close()
    End Sub
End Class
6. Debug program yang telah kita buat, alhasil :D
Proses penambahan data
a 
Proses double click pada DataGridView
Proses Edit data pada form edit (form 2)
Sukses Update data  
 

NB : - Script yang saya lampirkan diatas tidak termasuk validasi proses input, 
        - Apabila ada script yang tidak efektif, dapat teman-teman ubah sesuai kebutuhan

Terimakasih atas perhatiannya, sekali lagi ! Cheers, it's time to your shine !  

Tidak ada komentar:

Posting Komentar