03 พฤษภาคม 2555

VB.Net ค้นหาข้อมูล

ทความนี้นำเสนอการสร้างฟอร์มค้นหาข้อมูล โดยทำการสร้างฟอร์มขึ้นมาแล้วค้นข้อมูลจากตารางในฐานข้อมูล SQL Server จากนั้นนำข้อมูลที่ค้นได้มาแสดงในกริด เมื่อผู้ใช้ DoubleClick เลือกที่แถว ให้ทำการส่งค่ารหัสในแถวที่เลือกกลับไปยังฟอร์มหลัก

เริ่มทำฟอร์มสอบถามข้อมูล
ให้สร้างฟอร์มที่ Visual Studio ขึ้นมาใหม่ แล้วตั้งชื่อฟอร์มว่า frmInquiry จากนั้นให้สร้างคอนโทรลต่างๆ ตามภาพแล้วกำหนด property ดังนี้



ป้อนคำสั่งที่ frmInquiry.vb ดังนี้
Imports System.Data
Imports System.Data.SqlClient

Public Class frmInquiry
    ' ตัวแปรที่ใช้ใน Property [AssCode]
    Dim rAssCode As String = " "

    Private Sub frmInquiry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        queryData()
        'สลับสีของแถว 
        DataGridView1.RowsDefaultCellStyle.BackColor = Color.White
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Azure

        With DataGridView1
            .DefaultCellStyle.NullValue = ""
            .Columns(0).HeaderText = "รหัสสินทรัพย์"
            .Columns(0).Width = 100
            .Columns(1).HeaderText = "รายการ"
            .Columns(1).Width = 200
            .Columns(2).HeaderText = "หน่วยนับ"
            .Columns(2).Width = 80
        End With
    End Sub
    Private Sub txtSearch_TextChanged(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) Handles txtSearch.TextChanged
        queryData()
    End Sub
    Private Sub DataGridView1_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
        Dim row As Integer = DataGridView1.CurrentCellAddress.Y
        AssCode = DataGridView1.Rows(row).Cells(0).Value   'Cell(0) คือ คอลัมแรกของกริดนับจากซ้ายมือ
        Me.Close()
    End Sub
    Sub queryData()
        'ให้ทำการแก้ไข Connection String ตามที่เราใช้งานอยู่
        Dim connString As String = "Data Source=.;Initial Catalog=ชื่อฐานข้อมูล;Persist Security Info=True;User ID=sa;Password=รหัสผ่าน"

        Dim myConn As SqlConnection = New SqlConnection
        myConn.ConnectionString = connString

        'ให้แก้ไขคำสั่ง SQL ตามที่ต้องการ
        Dim da As SqlDataAdapter = New SqlDataAdapter _
                       ("SELECT TOP 50 ASSCODE, NAME, UMCODE  FROM ABASSET WHERE ASSCODE+NAME LIKE '%" & txtSearch.Text.Trim & "%'  ORDER BY ASSCODE", myConn)
        Dim ds As DataSet = New DataSet
        da.Fill(ds, "ABASSET")
        myConn.Close()

        DataGridView1.DataSource = ds.Tables(0)
    End Sub
    '' หากมีการส่งคืนหลายค่า ก็สร้าง Property เพิ่ม
    Public Property [AssCode]() As String
        Get
            Return Me.rAssCode
        End Get
        Set(ByVal value As String)
            Me.rAssCode = value
        End Set
    End Property
End Class
ต่อมาเราจะมาทำฟอร์มหลัก สำหรับเรียกฟอร์มค้นหา

เริ่มทำฟอร์มหลัก

ที่ฟอร์ม Form1 ให้สร้างคอนโทรลต่างๆ ดังภาพ

จากนั้นทำการป้อนคำสั่งที่ form1.vb ดังนี้

Public Class Form1
    Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        Dim fm As New frmInquiry()
        fm.ShowDialog()
        If fm.AssCode.ToString <> "" Then
            txtAssCode.Text = fm.AssCode.ToString  'อ้างถึง property ชื่อ [AssCode] ของฟอร์ม frmInquiry
        End If
        fm.Dispose()
        txtAssCode.Focus()
End Sub
End Class
ทำการเรียกฟอร์มขึ้นมาทำงาน โดยกดปุ่ม F5 เพื่อรันโปรเจกต์
เมื่อปร่กฎหน้าจอ Form1 ให้คลิกปุ่ม ... ที่ฟอร์ม แล้วทดสอบดู ตามตัวอย่างดังภาพ


2 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...
ความคิดเห็นนี้ถูกลบโดยผู้ดูแลระบบของบล็อก
กานต์ชนก กล่าวว่า...

ขอบคุณมากสำหรับบทความนี้ค่ะ..มีประโยชน์กับตัวหนูมากเลย... กำลังทำโปรแจ็คพอดี ต้องขอบคุณที่ให้ความรู้นะค่ะ ^^

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.