ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 7234|ตอบกลับ: 1

[VB.NET] การค้นหาข้อมูลอย่างรวดเร็วทันใจ (Quick Search)

[คัดลอกลิงก์]

311

กระทู้

502

โพสต์

6052

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6052




สำหรับบทความนี้ แอดมินขอนำเสนอวิธีการค้นหาข้อมูลอย่างรวดเร็ว โดยการกดคีย์ หรือคำที่ต้องการ ระบบมันก็จะทำการประมวลผล 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


ตัวอย่างของการใช้งานจริง ...
  1.         Dim Statement As String = _
  2.             " Select * FROM ProvinceData WHERE " & _
  3.             " ProvinceName LIKE '%" & txtSearch.Text & "%'" & _
  4.             " OR " & _
  5.             " ShortThai LIKE '%" & txtSearch.Text & "%'" & _
  6.             " OR " & _
  7.             " ShortEng LIKE '%" & txtSearch.Text & "%'" & _
  8.             " ORDER BY ProvincePK, ProvinceName "
คัดลอกไปที่คลิปบอร์ด
เป็นการค้นหาชื่อจังหวัด (ProvinceName) หรือ ชื่อจังหวัดไทยแบบย่อ (ShortThai) หรือ ชื่อจังหวัดอังกฤษแบบย่อ (ShortEng) ไปพร้อมๆกัน โดยมีการต่อเชื่อมเงื่อนไขด้วย OR (หรือ) โดยที่ Users ไม่จำเป็นที่จะมาเลือกก่อนว่า ต้องการค้นหาข้อมูลแบบไหน ...

มาดูโค้ดกันเถอะ ...
  1. ' / --------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : thongkorn@hotmail.com
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
  6. ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
  7. ' / Purpose: Quick search database by specifying the ProvinceName, ShortThai and ShortEng keyword.
  8. ' / Microsoft Visual Basic .NET (2010) SP1

  9. ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
  10. ' / You can modify and/or distribute without to inform the developer.
  11. ' / --------------------------------------------------------------------

  12. Imports System.Data.OleDb

  13. Public Class frmQuickSearch
  14.     Dim Conn As OleDb.OleDbConnection

  15.     Private Sub frmQuickSearch_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  16.         Me.CenterToScreen()
  17.         txtSearch.Text = ""
  18.         '/ Configure my DataBase Path
  19.         Dim strPath As String = Application.StartupPath
  20.         '/ strPath to Lower Case and Replace.
  21.         strPath = strPath.ToLower.Replace("\bin\debug", "")

  22.         '/ Connection String
  23.         Dim strConn As String = _
  24.             " Provider=Microsoft.ACE.OLEDB.12.0;" & _
  25.             " Data Source = " & strPath & "ProvinceData.accdb; " & _
  26.             " Persist Security Info=False;"

  27.         Try
  28.             '/ Connect DataBase
  29.             Conn = New OleDb.OleDbConnection(strConn)
  30.             '/ Conn.Open()
  31.         Catch ex As Exception
  32.             MsgBox(ex.Message, MsgBoxStyle.Information)
  33.         End Try

  34.     End Sub

  35.     Private Sub txtSearch_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtSearch.TextChanged
  36.         '/ Cut off the characters unwanted.
  37.         txtSearch.Text = txtSearch.Text.Replace("%", "").Replace("'", "").Replace("*", "")

  38.         '/ Skip this sub if null value.
  39.         If Trim(txtSearch.Text) = "" Or Len(Trim(txtSearch.Text)) = 0 Then Exit Sub
  40.         '/ Set SQL statements
  41.         Dim Statement As String = _
  42.             " Select * FROM ProvinceData WHERE " & _
  43.             " ProvinceName LIKE '%" & txtSearch.Text & "%'" & _
  44.             " OR " & _
  45.             " ShortThai LIKE '%" & txtSearch.Text & "%'" & _
  46.             " OR " & _
  47.             " ShortEng LIKE '%" & txtSearch.Text & "%'" & _
  48.             " ORDER BY ProvincePK, ProvinceName "
  49.         '/ Connect already in Form_Load
  50.         If Conn.State = ConnectionState.Closed Then Conn.Open()

  51.         Dim Cmd = New OleDbCommand(Statement, Conn)
  52.         Dim DR As OleDbDataReader = Cmd.ExecuteReader
  53.         Dim DT As New DataTable
  54.         DT.Load(DR)
  55.         dgvData.DataSource = DT
  56.         DR.Close()
  57.         Conn.Close()

  58.     End Sub

  59.     Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
  60.         Me.Close()
  61.     End Sub

  62.     Private Sub frmQuickSearch_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  63.         Conn.Close()
  64.         Me.Dispose()
  65.         Application.Exit()
  66.     End Sub

  67. End Class
คัดลอกไปที่คลิปบอร์ด



ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...




ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

58

โพสต์

10

เครดิต

Member

Rank: 2

เครดิต
10
โพสต์ 2022-10-25 19:35:10 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-26 08:03 , Processed in 0.142846 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้