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.MouseUpTambahkan 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
Next
Catch ex As Exception
Exit Sub
End Try
End Sub
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
sipp makasih gann...
ReplyDeleteklo 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..