thongkorn โพสต์ 2017-11-5 13:04:49

[VB.NET] พื้นฐานการเขียนโปรแกรมแบบ CRUD ภาค 2 กับการใช้ ComboBox แสดงผลรายชื่อจังหวัด

http://www.g2gnet.com/webboard/images/vbnet/patientcomboprovince.png
จากภาคแรก พื้นฐานการเขียนโปรแกรมแบบ CRUD (Create, Read, Update, Delete) กับตัวอย่างฐานข้อมูลผู้ป่วย MS Access แอดมินนำเสนอการใช้ตารางข้อมูลแบบเดี่ยวๆเพื่อใช้ในการเก็บข้อมูล สำหรับในภาค 2 นี้ก็ยังคงเป็นการใช้แบบเดิมอยู่ แต่จะเพิ่มความสะดวกในการใช้งานให้กับผู้ใช้งานมากยิ่งขึ้น โดยให้สังเกตว่าข้อมูลที่มีโอกาสจะเกิดการคีย์ซ้ำๆได้ตลอดก็คือ ข้อมูลรายชื่อจังหวัด ซึ่งก่อนที่จะไปถึงวิธีการแยกตารางข้อมูลออกจากกันนั้น แอดมินจะยังคงใช้ข้อมูลในตารางเดิมนี่แหละ แต่เราใช้การตัดรายชื่อจังหวัดที่ซ้ำๆกันเพื่อให้เหลืออยู่ชื่อเดียว โดยเราใช้คำสั่ง DISTINCT ...
SELECT DISTINCT Patient.ProvinceName
FROM Patient;http://www.g2gnet.com/webboard/images/vbnet/PatientComboDB.png

โค้ดในการโหลดรายชื่อจังหวัดเข้ามายัง ComboBox Control ...
    ' / --------------------------------------------------------------------------------
    ' / นำรายชื่อจังหวัดโดยตัดค่าซ้ำให้เหลือค่าเดียว มาแสดงผลใน ComboBox
    Public Sub PopulateComboBox()
      Try
            If Conn.State = ConnectionState.Closed Then Conn.Open()
            Dim strStmt As String = "SELECT DISTINCT ProvinceName FROM Patient ORDER BY ProvinceName "
            DA = New OleDbDataAdapter(strStmt, Conn)
            Dim DT As New DataTable
            DA.Fill(DT)
            '/ Display the name
            cmbProvince.DisplayMember = "ProvinceName"
            cmbProvince.DataSource = DT
            With cmbProvince
                .DropDownStyle = ComboBoxStyle.DropDown
                .AutoCompleteMode = AutoCompleteMode.Suggest
                .AutoCompleteSource = AutoCompleteSource.ListItems
            End With
            DA.Dispose()
            Conn.Close()
            cmbProvince.Enabled = True
      Catch ex As Exception
            MessageBox.Show(ex.Message)
      End Try
    End Sub
เวลาที่ต้องการแสดงผลข้อมูลชื่อจังหวัด ก็นำค่าในตารางข้อมูลมาให้กับ ComboBox ... (จากโปรแกรมย่อย dgvData_DoubleClick)
            cmbProvince.Text = "" & .Rows(0)("ProvinceName").ToString()ส่วนของการบันทึกข้อมูลก็ไม่มีอะไร ทำเหมือนกับการจัดการแบบ TextBox โดยที่ไม่ต้องมีการเช็คค่าซ้ำใดๆเลย ... แต่แอดมินขอส่งท้ายด้วยคำถามว่า หากมีข้อมูลที่ต้องการแสดงผลใน ComboBox หลายๆตัวจะแก้ไขโค้ดให้เป็นฟังค์ชั่น หรือ คลาสได้อย่างไร???

Conclusion: ขอสรุปสั้นๆ เมื่อเราเขียนโปรแกรมด้วยความยากขึ้น ก็จะทำให้ Users ใช้งานได้ง่ายมากขึ้นเท่านั้นครับ ... แต่ทั้งนี้ทั้งนั้นมันก็ยังเกิดความซ้ำซ้อนของข้อมูล ซึ่งเราจะต้องทำการแยกข้อมูลในลักษณะนี้ไปไว้ในตารางย่อยก่อน เช่น ตารางหน่วยนับ ตารางตำแหน่ง หรือตารางแผนก เป็นต้น ... สวัสดี
ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่

jaricha5 โพสต์ 2019-12-9 09:38:14

ขอบคุณความรู้ดีๆ ที่แบ่งปันครับ

g2gsoftuser โพสต์ 2022-10-25 15:41:00

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] พื้นฐานการเขียนโปรแกรมแบบ CRUD ภาค 2 กับการใช้ ComboBox แสดงผลรายชื่อจังหวัด