Minggu, 21 Juli 2013

Program Sort, Filter dan Cari DI VB.NET

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
1

Tidak ada komentar :

Posting Komentar