[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) ได้ที่นี่
ขอบคุณความรู้ดีๆ ที่แบ่งปันครับ ขอบคุณครับ
หน้า:
[1]