Halaman

WARNING!!
Please do not post links crack / patch in your comment

Tuesday, December 20, 2011

Entry Column Using GridControl With Database (Basic)

Pada Artikel sebelumnya yaitu Entry Column Using GridControl With TableOnTheFly , kita sudah pelajari bagaimana cara untuk menginput/entry data langsung pada GriControl. Jika anda belum mengerti baiknya anda ulas lagi di artikel sebelumnya, karena pada artikerl ini masih sangat berhubungan dengan artikel Entry Column Using GridControl With TableOnTheFly.

Pada artikel ini saya akan melanjutkan apa yang sudah saya bahas, sehingga saya tidak terlalu panjang lagi untuk menjelaskannnya. Pada artikel ini saya akan membahas koneksi ke database (Access 2007) dan cara menyimpan hasil inputan/entry data di GridControl ke dalam database. Anda bisa memodifikasi untuk database yang anda pakai/disesuaikan dengan kebutuhan anda.

Baiklah, kita mulai dengan tampilan seperti pada artikel sebelumnya, hanya di tambahkan beberapa tombol seperti gambar berikut ini


setalah anda buat seperti di atas, sekarang kita setup untuk koneksi ke database access 2007 seperti ini :

Imports System.Data.OleDb
Imports DevExpress.XtraGrid.Views.Grid

Public con As New OleDb.OleDbConnection
Dim dtTable As DataTable
Dim GetCustID As String
Dim dtHutang As DataTable
'Buka koneksi ke database
    Public Sub opencon()
        Try
            Dim Path As String = Application.StartupPath + "\" + "udinsofyanblogspotcom.accdb"
            con = New OleDb.OleDbConnection
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Path & ";Jet OLEDB:Database Password=; "
            If con.State = ConnectionState.Closed Then con.Open()
        Catch ex As OleDbException
            Throw ex
        End Try
    End Sub

Karena saya menggunakan OLEDB untuk mengakses ke database Access 2007, maka saya harus melakukan Imports System.Data.OleDb. sekarang kita telah tersambung dengan database, langkah berikutnya adalah bagaimana jika yang kita input/entry pada GridControl salah dan kita harus menghapusnya, tapi sebelumnya kita harus bisa menangkap posisi kursor pada saat mouse di klik pada baris/row di GridControl:

 Private Sub GridView1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles GridView1.MouseUp
        Try
            For Each i As Integer In GridView1.GetSelectedRows()
                Dim row As DataRow = GridView1.GetDataRow(i)
                GetCustID = String.Format(row("custid")).Trim
            Next
        Catch ex As Exception
            Exit Sub
        End Try
    End Sub
Tambahkan scrip berikut pada tombol Delete. Delete disini hanya digunakan pada saat entry data, jadi tidak menghapus data jika sudah disimpan. berikut scripnya :
 Try
            For Each i As Integer In GridView1.GetSelectedRows()
                Dim row As DataRow = GridView1.GetDataRow(i)
                GetCustID = String.Format(row("custid")).Trim
                row.Delete()
                dtHutang.AcceptChanges()
            Next
  Catch ex As Exception
            Exit Sub
  End Try
Scrip di atas akan menghapus baris yang telah di tunjuk oleh mouse, bagaimana jika kita ingin pakai Double Click pada mouse untuk menghapusnya, seperti ini :
 Private Sub GridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DoubleClick
        Try
            For Each i As Integer In GridView1.GetSelectedRows()
                Dim row As DataRow = GridView1.GetDataRow(i)
                GetCustID = String.Format(row("custid")).Trim
                row.Delete()
                dtHutang.AcceptChanges()
            Next
        Catch ex As Exception
            Exit Sub
        End Try
    End Sub
kita sudah membuat event delete, sekarang bagaimana jika data yang telah di input/entry dimasukkan ke dalam database, berikut scriptnya :
Private Sub InsertTransaksi()
        opencon()
        Dim count As Integer
        For Each Row As DataRow In dtHutang.Rows
            Dim cmd As New OleDbCommand
            With cmd
                .CommandType = CommandType.Text
                .Connection = con
            End With
            cmd.CommandText = "insert into sample " & _
                    "(custid, nama, hutang, tgl_jatuhtempo) " & _
                    "values (" & _
                    "'" & Row("custid") & "'," & _
                    "'" & Row("nama") & "'," & _
                    "'" & Row("hutang") & "'," & _
                    "'" & Row("tgl_jatuhtempo") & "' " & _
                    ")"
            opencon()
            count = cmd.ExecuteNonQuery()
        Next
        Try
            If count > 0 Then
                MessageBox.Show("Success...", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information)
                dtHutang.Clear()
            Else
                MessageBox.Show("Failed...", "Save", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Catch ex As OleDbException
            MessageBox.Show(ex.Message)
        Finally
            con.Close()
        End Try
    End Sub

Pada tombol Save, anda hanya memanggil prosesedure di atas seperti ini :
       Try
            InsertTransaksi()
        Catch ex As Exception
            Exit Sub
        End Try
Tombol Retrieve dibuat hanya untuk mengecek apakah hasil dari input/entry yang telah dibuat masuk kedalam database atau tidak, seperti ini :
        Try
            opencon()
            Using dsReg As New DataSet()
                Dim cmd As New OleDbCommand("select * from sample", con)
                Dim daReg As New OleDbDataAdapter(cmd)
                daReg = New OleDbDataAdapter(cmd)
                dsReg.Tables.Clear()
                daReg.Fill(dsReg, "data") ' data hanya penamaan di dataset, bisa diisi bebas
                dtTable = Nothing
                dtTable = dsReg.Tables("data")
                GridControl1.DataSource = Nothing
                GridControl1.DataSource = dtTable
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        Finally
            con.Close()
        End Try
   
Untuk Tombol New, jika anda ingin membuat input/entry data baru kedalam GridControl
        Try
            dtHutang.Clear()
            GridControl1.DataSource = Nothing
            TableOnTheFlay()
        Catch ex As Exception
            Exit Sub
        End Try


Jika sudah selesai, maka jalankan dengan menekan tombol F5, maka hasilnya akan seperti ini



semoga membantu...


Salam

1 comment:

  1. sipp makasih gann...
    klo ingin ada button di kanan row.. button add untuk penambahan satu row.. jdi gak nunggu semua di masukkan ke table baru di input ke database..
    jdi satu-satu gann..

    makasih gann ane follower setia gan..

    ReplyDelete

Note: Only a member of this blog may post a comment.

Search This Blog