Quantcast
Viewing all articles
Browse latest Browse all 7

DataView.RowFilter

Hi Tom,

Welcome to MSDN forums!

Here are three approaches to search records from database and filter them.


1) Use T-SQL Select command to filter records

Prerequisites: DataGridView1 and TextBox1 on Form1.

Imports System.Data.OleDb

PublicClass Form1

    ' Handle TextBox_TextChanged event

    PrivateSub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim keywords AsString = TextBox1.Text

        Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb")

        ' Use wildcard  

        Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1 WHERE Filed1 Like '%"& keywords & "%' ", con)

        ' or Where Filed1='" & keywords & "'  

        con.Open()

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)

        Dim myDataSet As DataSet = New DataSet()

        myDA.Fill(myDataSet, "MyTable")

        DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView

    EndSub

EndClass

 

2) Use DataView.RowFilter Property to filter records

Prerequisites: DataGridView1 and TextBox1 on Form1.

Imports System.Data.OleDb

PublicClass Form1

    Dim ds As DataSet

    ' Firstly binding all records to DataGridView  

    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load

        Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb")

        Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1", con)

        con.Open()

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)

        ds = New DataSet()

        myDA.Fill(ds, "MyTable")

        con.Close()

        DataGridView1.DataSource = ds.Tables("MyTable").DefaultView

    EndSub

    'Then filter datatable view  

    PrivateSub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim keywords AsString = TextBox1.Text

        ds.Tables("MyTable").DefaultView.RowFilter = "Field1 ="& keywords

        ' or  = "Field1 Like '%" & keywords & "%' "  

    EndSub

EndClass

 

Related thread:

http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/bdd212be-f815-4023-9db1-582b2439987a

 

3) You can use LINQ to SQL to filter records if you use SQL Server database.

        Dim db As DataClasses1DataContext = New DataClasses1DataContext()

 

        ' Using Like wildcard in LING to SQL

        Dim tableQuery = _

        From t In db.Table1 Where t.Filed1 Like"%"& keywords & "%" _

        Select t

 

        ' Or using String.Contains method instead of Like wildcard in LING to SQL

        Dim tableQuery = _

        From t In db.Table1 Where t.Filed1.Contains(keywords) _

        Select t

 

        DataGridView1.DataSource = tableQuery

Some tutorials about LINQ to SQL:

http://msdn.microsoft.com/en-us/library/bb546190.aspx

http://blogs.msdn.com/charlie/archive/2007/11/19/connect-to-a-sql-database-and-use-the-sql-designer.aspx

http://blogs.msdn.com/mitsu/archive/2008/04/02/visual-linq-query-builder-for-linq-to-sql-vlinq.aspx

Best regards,
Martin Xie


Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

Viewing all articles
Browse latest Browse all 7

Trending Articles