|
สำหรับบทความนี้ แอดมินขอนำเสนอวิธีการค้นหาข้อมูลอย่างรวดเร็ว โดยการกดคีย์ หรือคำที่ต้องการ ระบบมันก็จะทำการประมวลผล Query ใหม่ เพื่อทำการค้นหาคำที่มีลักษณะใกล้เคียงกัน ด้วยคำสั่ง LIKE ... Visual Basic จะมีหลักการที่สำคัญ คือ Event/Driven ...
Event คือ เหตุการณ์ ในตัวอย่างนี้จะเกิดเหตุการณ์ที่ txtSearch_TextChanged โดยมีการกดคีย์ลงในช่อง TextBox แล้วเกิดการเปลี่ยนแปลงค่า
Driven คือ เมื่อเกิดเหตุการณ์ในการกดคีย์ แล้วจะให้มันไปทำอะไร ... นั่นคือ ค้นหาข้อมูล
LIKE Syntax
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
ตัวอย่าง การค้นหาคำที่ขึ้นต้นด้วยอะไรก็ได้ แต่ตามด้วย 'a'
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
ตัวอย่าง การค้นหาคำที่ขึ้นต้น หรือลงท้ายด้วยอะไรก็ได้ แต่มี 'a' อยู่ภายในนั้น
SELECT * FROM Customers
WHERE CustomerName LIKE '%a%';
เช่น '12a6599XYZ' หรือ 'a2222'
หมายเหตุ: การที่เครื่องหมาย Single Quote ' ปิดหัวท้าย หมายความว่าเป็นการค้นหาข้อมูลแบบ String
ตัวอย่างของการใช้งานจริง ...
- Dim Statement As String = _
- " Select * FROM ProvinceData WHERE " & _
- " ProvinceName LIKE '%" & txtSearch.Text & "%'" & _
- " OR " & _
- " ShortThai LIKE '%" & txtSearch.Text & "%'" & _
- " OR " & _
- " ShortEng LIKE '%" & txtSearch.Text & "%'" & _
- " ORDER BY ProvincePK, ProvinceName "
คัดลอกไปที่คลิปบอร์ด เป็นการค้นหาชื่อจังหวัด (ProvinceName) หรือ ชื่อจังหวัดไทยแบบย่อ (ShortThai) หรือ ชื่อจังหวัดอังกฤษแบบย่อ (ShortEng) ไปพร้อมๆกัน โดยมีการต่อเชื่อมเงื่อนไขด้วย OR (หรือ) โดยที่ Users ไม่จำเป็นที่จะมาเลือกก่อนว่า ต้องการค้นหาข้อมูลแบบไหน ...
มาดูโค้ดกันเถอะ ...
- ' / --------------------------------------------------------------------
- ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
- ' / eMail : thongkorn@hotmail.com
- ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
- ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
- ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
- ' / Purpose: Quick search database by specifying the ProvinceName, ShortThai and ShortEng keyword.
- ' / Microsoft Visual Basic .NET (2010) SP1
- ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
- ' / You can modify and/or distribute without to inform the developer.
- ' / --------------------------------------------------------------------
- Imports System.Data.OleDb
- Public Class frmQuickSearch
- Dim Conn As OleDb.OleDbConnection
- Private Sub frmQuickSearch_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- Me.CenterToScreen()
- txtSearch.Text = ""
- '/ Configure my DataBase Path
- Dim strPath As String = Application.StartupPath
- '/ strPath to Lower Case and Replace.
- strPath = strPath.ToLower.Replace("\bin\debug", "")
- '/ Connection String
- Dim strConn As String = _
- " Provider=Microsoft.ACE.OLEDB.12.0;" & _
- " Data Source = " & strPath & "ProvinceData.accdb; " & _
- " Persist Security Info=False;"
- Try
- '/ Connect DataBase
- Conn = New OleDb.OleDbConnection(strConn)
- '/ Conn.Open()
- Catch ex As Exception
- MsgBox(ex.Message, MsgBoxStyle.Information)
- End Try
- End Sub
- Private Sub txtSearch_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtSearch.TextChanged
- '/ Cut off the characters unwanted.
- txtSearch.Text = txtSearch.Text.Replace("%", "").Replace("'", "").Replace("*", "")
- '/ Skip this sub if null value.
- If Trim(txtSearch.Text) = "" Or Len(Trim(txtSearch.Text)) = 0 Then Exit Sub
- '/ Set SQL statements
- Dim Statement As String = _
- " Select * FROM ProvinceData WHERE " & _
- " ProvinceName LIKE '%" & txtSearch.Text & "%'" & _
- " OR " & _
- " ShortThai LIKE '%" & txtSearch.Text & "%'" & _
- " OR " & _
- " ShortEng LIKE '%" & txtSearch.Text & "%'" & _
- " ORDER BY ProvincePK, ProvinceName "
- '/ Connect already in Form_Load
- If Conn.State = ConnectionState.Closed Then Conn.Open()
- Dim Cmd = New OleDbCommand(Statement, Conn)
- Dim DR As OleDbDataReader = Cmd.ExecuteReader
- Dim DT As New DataTable
- DT.Load(DR)
- dgvData.DataSource = DT
- DR.Close()
- Conn.Close()
- End Sub
- Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
- Me.Close()
- End Sub
- Private Sub frmQuickSearch_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Conn.Close()
- Me.Dispose()
- Application.Exit()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|