Anda tidak dapat mengurut, menfilter data yang terdapat pada DataTable, untuk melakukan hal tersebut
anda membutuhkan DataView.
Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort
key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan
data binding.
Membuat DataView
Misalnya anda telah memiliki DataTable "barang" yang berada dalam DataSet ODS, maka anda dapat
menggunakan penulisan berikut untuk membentuk DataView dari DataTable tersebut :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'Buat Connection
OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data
Source=D:\BelajarVBnet\Belajar.mdb;")
sSQL = "Select * From Barang"
'Buat Select Command untuk DataAdapter
OledbComm = New OleDbCommand(sSQL, OledbConn)
OledbComm.CommandType = CommandType.Text
'Buat DataAdapter
OleDA = New OleDbDataAdapter(OledbComm)
'Isi Data ke DataSet sebagai DataTable barang
OleDA.Fill(ODS, "Barang")
'Buat DataView dari DataTable barang
ODV = New DataView(ODS.Tables("Barang"))
'Ikat DataView sebagai DataSource DataGrid
DataGrid1.DataSource = ODV
End Sub
Melakukan Filter
Misalkan txtFilter adalah sebuah textbox yang berisi ekspresi untuk filter, maka penulisan berikut
untuk melakukan filter pada object DataView
ODV.RowFilter = txtFilter.Text
Melakukan Sort
Misalkan kita ingin melakukan sort terhadap kolom KodeBar, maka penulisan berikut untuk melakukan
hal tersebut
ODV.Sort = "KodeBar ASC"
Melakukan Find
Misalkan kita ingin mencari data pada kolom yang di Sort berdasarkan isi textbox txtFind, maka dapat
menggunakan penulisan :
Row = ODV.Find(txtFind.Text)
Dalam hal ini variabel Row akan berisi nomor baris hasil Find, atau -1 kalau tidak ditemukan.
Program Kongkrit
Imports System.data.OleDb
Public Class Form1
Inherits System.Windows.Forms.Form
Dim OledbConn As OleDbConnection
Dim OledbComm As OleDbCommand
Dim sSQL As String
Dim OleDA As OleDbDataAdapter
Dim ODS As New DataSet
Dim ODV As New DataView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Buat Connection
OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data
Source=D:\BelajarVBnet\Belajar.mdb;")
sSQL = "Select * From Barang"
'Buat Select Command untuk DataAdapter
OledbComm = New OleDbCommand(sSQL, OledbConn)
OledbComm.CommandType = CommandType.Text
'Buat DataAdapter
OleDA = New OleDbDataAdapter(OledbComm)
'Isi Data ke DataSet sebagai DataTable barang
OleDA.Fill(ODS, "Barang")
'Buat DataView dari DataTable barang
ODV = New DataView(ODS.Tables("Barang"))
'Ikat DataView sebagai DataSource DataGrid
DataGrid1.DataSource = ODV
End Sub
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Closed
Dim OCommBuilder As OleDbCommandBuilder
DataGrid1.Update()
OCommBuilder = New OleDbCommandBuilder(OleDA)
OleDA.Update(ODS, "Barang")
ODS.Dispose()
OledbConn.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSortKode.Click
ODV.Sort = "KodeBar DESC"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSortKeterangan.Click
ODV.Sort = "Keterangan"
End Sub
Private Sub cmdFilter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdFilter.Click
Try
ODV.RowFilter = txtFilter.Text
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub cmdFind_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdFind.Click
Dim Row As Integer
Try
Row = ODV.Find(txtFind.Text)
If Row = -1 Then
MsgBox("Tidak ketemu")
Else
Me.BindingContext(ODV).Position = Row
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
anda membutuhkan DataView.
Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort
key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan
data binding.
Membuat DataView
Misalnya anda telah memiliki DataTable "barang" yang berada dalam DataSet ODS, maka anda dapat
menggunakan penulisan berikut untuk membentuk DataView dari DataTable tersebut :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'Buat Connection
OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data
Source=D:\BelajarVBnet\Belajar.mdb;")
sSQL = "Select * From Barang"
'Buat Select Command untuk DataAdapter
OledbComm = New OleDbCommand(sSQL, OledbConn)
OledbComm.CommandType = CommandType.Text
'Buat DataAdapter
OleDA = New OleDbDataAdapter(OledbComm)
'Isi Data ke DataSet sebagai DataTable barang
OleDA.Fill(ODS, "Barang")
'Buat DataView dari DataTable barang
ODV = New DataView(ODS.Tables("Barang"))
'Ikat DataView sebagai DataSource DataGrid
DataGrid1.DataSource = ODV
End Sub
Melakukan Filter
Misalkan txtFilter adalah sebuah textbox yang berisi ekspresi untuk filter, maka penulisan berikut
untuk melakukan filter pada object DataView
ODV.RowFilter = txtFilter.Text
Melakukan Sort
Misalkan kita ingin melakukan sort terhadap kolom KodeBar, maka penulisan berikut untuk melakukan
hal tersebut
ODV.Sort = "KodeBar ASC"
Melakukan Find
Misalkan kita ingin mencari data pada kolom yang di Sort berdasarkan isi textbox txtFind, maka dapat
menggunakan penulisan :
Row = ODV.Find(txtFind.Text)
Dalam hal ini variabel Row akan berisi nomor baris hasil Find, atau -1 kalau tidak ditemukan.
Program Kongkrit
Imports System.data.OleDb
Public Class Form1
Inherits System.Windows.Forms.Form
Dim OledbConn As OleDbConnection
Dim OledbComm As OleDbCommand
Dim sSQL As String
Dim OleDA As OleDbDataAdapter
Dim ODS As New DataSet
Dim ODV As New DataView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Buat Connection
OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data
Source=D:\BelajarVBnet\Belajar.mdb;")
sSQL = "Select * From Barang"
'Buat Select Command untuk DataAdapter
OledbComm = New OleDbCommand(sSQL, OledbConn)
OledbComm.CommandType = CommandType.Text
'Buat DataAdapter
OleDA = New OleDbDataAdapter(OledbComm)
'Isi Data ke DataSet sebagai DataTable barang
OleDA.Fill(ODS, "Barang")
'Buat DataView dari DataTable barang
ODV = New DataView(ODS.Tables("Barang"))
'Ikat DataView sebagai DataSource DataGrid
DataGrid1.DataSource = ODV
End Sub
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Closed
Dim OCommBuilder As OleDbCommandBuilder
DataGrid1.Update()
OCommBuilder = New OleDbCommandBuilder(OleDA)
OleDA.Update(ODS, "Barang")
ODS.Dispose()
OledbConn.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSortKode.Click
ODV.Sort = "KodeBar DESC"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSortKeterangan.Click
ODV.Sort = "Keterangan"
End Sub
Private Sub cmdFilter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdFilter.Click
Try
ODV.RowFilter = txtFilter.Text
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub cmdFind_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdFind.Click
Dim Row As Integer
Try
Row = ODV.Find(txtFind.Text)
If Row = -1 Then
MsgBox("Tidak ketemu")
Else
Me.BindingContext(ODV).Position = Row
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Tidak ada komentar:
Posting Komentar