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

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

[VB6] แสดงผลรหัสไปรษณีย์ประเทศไทย ด้วย ComboBox

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

309

กระทู้

500

โพสต์

6030

เครดิต

ผู้ดูแลระบบ

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

Rank: 9Rank: 9Rank: 9

เครดิต
6030



โปรเจคนี้จะเป็นการแสดงผลแบบเรียงลำดับ คือ เลือกจังหวัดก่อน จากนั้นก็จะแสดงผลอำเภอ เมื่อเลือกอำเภอก็จะแสดงผลรายชื่อตำบลออกมา จนท้ายที่สุดก็เป็นรหัสไปรษณีย์ โดยกระบวนการขั้นตอนต่างๆ จะเป็นไปในลักษณะ Event/Driven อย่างชัดเจน เช่น เกิดเหตุการณ์ (Event) โดยการเลือกชื่อจังหวัดจาก ComboBox จากนั้นสั่งให้ไปทำอะไร (Driven) ก็คือการทำ Query ข้อมูลอำเภอที่อยู่ในจังหวัดนั้นๆออกมา ... หลักการใน
การทำ Query ที่สำคัญคือ DISTINCT เป็นการคัดกรองข้อมูลที่ซ้ำกันให้เหลือเพียง 1 เดียว ...


ตัวอย่างการใช้งาน DISTINCT เพื่อทำการกรองข้อมูลที่ซ้ำกัน ให้เหลือเพียงค่าเดียว

มาดูโค้ดกันเถอะ ...
  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:  Information PostCode data in Thailand.
  8. ' / Microsoft Visual Basic 6.0 (SP1) + FarPoint Spread 8.0
  9. ' /
  10. ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
  11. ' / You can modify and/or distribute without to inform the developer.
  12. ' / --------------------------------------------------------------------------------
  13. Option Explicit

  14. '// Public variable which can see in this only project.
  15. Dim ConnDB As New ADODB.Connection
  16. Dim RS As New ADODB.Recordset
  17. Dim Statement As String

  18. Public Sub OpenDataBase()
  19. On Error GoTo Err_Handler
  20. Dim DB_File As String
  21.     DB_File = App.Path
  22.     If Right$(DB_File, 1) <> "" Then DB_File = DB_File & ""
  23.     DB_File = DB_File & "PostCode2555.MDB"
  24.     ' เชื่อมต่อไฟล์ข้อมูล - Open Connection
  25.     Set ConnDB = New ADODB.Connection
  26.     ConnDB.ConnectionString = _
  27.         " Provider=Microsoft.Jet.OLEDB.4.0;" & _
  28.         " Data Source=" & DB_File & ";" & _
  29.         " Persist Security Info=False"
  30.     ConnDB.Open
  31.     Exit Sub

  32. Err_Handler:
  33.     MsgBox "Error : " & Err.Number & " " & Err.Description
  34.     End
  35. End Sub

  36. Private Sub Form_Load()
  37.     Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
  38.     ' เคลียร์หน้าจอ
  39.     cmbProvince.Clear
  40.     cmbAmphur.Clear
  41.     cmbTumbon.Clear
  42.     lblPostCode.Caption = ""
  43.     txtRemark.Text = ""
  44.    
  45.     ' เชื่อมต่อฐานข้อมูล
  46.     Call OpenDataBase
  47.     ' โหลดรายชื่อจังหวัดเข้า ComboBox
  48.     Call LoadProvince
  49. End Sub

  50. ' / -----------------------------------------------------------------------------------------------------------
  51. ' Load รายการจังหวัดเข้ามาจากตาราง PostCode
  52. ' / -----------------------------------------------------------------------------------------------------------
  53. Sub LoadProvince()
  54.     Set RS = New ADODB.Recordset
  55.     ' DISTINCT คือ หากชื่อรายการมันซ้ำ ต้องตัดให้เหลือเพียงรายการเดียว
  56.     Statement = _
  57.             "SELECT DISTINCT PostCode.Province " & _
  58.             " From PostCode ORDER BY PostCode.Province "
  59.     Set RS = ConnDB.Execute(Statement, , adCmdText)
  60.     Do Until RS.EOF
  61.         cmbProvince.AddItem "" & RS("Province")
  62.         RS.MoveNext
  63.     Loop
  64.     RS.Close:    Set RS = Nothing
  65. End Sub

  66. ' / -----------------------------------------------------------------------------------------------------------
  67. ' เลือกรายชื่อจังหวัด แล้วต้องเอาข้อมูลรายชื่ออำเภอมาแสดงผลใน ComboBox
  68. ' / -----------------------------------------------------------------------------------------------------------
  69. Private Sub cmbProvince_Click()
  70.     cmbAmphur.Clear
  71.     cmbTumbon.Clear
  72.     lblPostCode.Caption = ""
  73.     txtRemark.Text = ""
  74.    
  75.     Set RS = New ADODB.Recordset
  76.     Statement = _
  77.             "SELECT DISTINCT PostCode.Amphur, PostCode.Province " & _
  78.             " From PostCode  " & _
  79.             " WHERE " & _
  80.             " Province = " & "'" & cmbProvince.Text & "'" & _
  81.             " ORDER BY PostCode.Amphur "
  82.     Set RS = ConnDB.Execute(Statement, , adCmdText)
  83.     Do Until RS.EOF
  84.         cmbAmphur.AddItem "" & RS("Amphur")
  85.         RS.MoveNext
  86.     Loop
  87.     RS.Close:    Set RS = Nothing
  88. End Sub

  89. ' / -----------------------------------------------------------------------------------------------------------
  90. ' เลือกอำเภอ แล้วจะต้องนำเอาข้อมูลรายชื่อตำบลเข้ามาไว้ใน ComboBox
  91. ' / -----------------------------------------------------------------------------------------------------------
  92. Private Sub cmbAmphur_Click()
  93.     cmbTumbon.Clear
  94.     lblPostCode.Caption = ""
  95.     txtRemark.Text = ""
  96.    
  97.     Set RS = New ADODB.Recordset
  98.     ' เงื่อนไขทดสอบ ใช้ชื่อจังหวัด และ อำเภอด้วย
  99.     ' DISTINCT คือ หากชื่อรายการมันซ้ำ ต้องตัดให้เหลือเพียงรายการเดียว
  100.     Statement = _
  101.             "SELECT DISTINCT PostCode.Amphur, PostCode.Province, PostCode.Tumbon " & _
  102.             " From PostCode  " & _
  103.             " WHERE " & _
  104.             " Province = " & "'" & cmbProvince.Text & "'" & _
  105.             " AND " & _
  106.             " Amphur = " & "'" & cmbAmphur & "'" & _
  107.             " ORDER BY PostCode.Tumbon "
  108.     Set RS = ConnDB.Execute(Statement, , adCmdText)
  109.     Do Until RS.EOF
  110.         cmbTumbon.AddItem "" & RS("Tumbon")
  111.         RS.MoveNext
  112.     Loop
  113.     RS.Close:    Set RS = Nothing
  114. End Sub

  115. ' / -----------------------------------------------------------------------------------------------------------
  116. ' เลือกตำบล แล้วจะแสดงรหัสไปรษณีย์
  117. ' / -----------------------------------------------------------------------------------------------------------
  118. Private Sub cmbTumbon_Click()
  119.     lblPostCode.Caption = ""
  120.     txtRemark.Text = ""
  121.    
  122.     Statement = _
  123.             "SELECT PostCode.Province, PostCode.Amphur, PostCode.Tumbon, " & _
  124.             " PostCode.PostCode, PostCode.Remark " & _
  125.             " From PostCode  " & _
  126.             " WHERE " & _
  127.             " Province = " & "'" & cmbProvince.Text & "'" & _
  128.             " AND " & _
  129.             " Amphur = " & "'" & cmbAmphur & "'" & _
  130.             " AND " & _
  131.             " Tumbon = " & "'" & cmbTumbon & "'" & _
  132.             " ORDER BY PostCode.Tumbon "
  133.     Set RS = ConnDB.Execute(Statement, , adCmdText)
  134.     lblPostCode.Caption = "" & RS("PostCode")
  135.     txtRemark.Text = "" & RS("Remark")
  136.     RS.Close:   Set RS = Nothing
  137. End Sub

  138. Public Sub CloseDataBase()
  139.     If ConnDB.State = adStateOpen Then
  140.         ConnDB.Close
  141.         Set ConnDB = Nothing
  142.     End If
  143. End Sub

  144. Private Sub Form_Unload(Cancel As Integer)
  145.     Call CloseDataBase
  146.     Set frmMain = Nothing
  147.     End
  148. End Sub
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับ VB6 และฐานข้อมูลรหัสไปรษณีย์ได้ที่นี่

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

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

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

1

กระทู้

7

โพสต์

93

เครดิต

Member

Rank: 2

เครดิต
93
โพสต์ 2021-6-30 10:24:05 | ดูโพสต์ทั้งหมด

อาจารย์ครับ VB.net มีวิธีการอย่างไรครับ

2

กระทู้

7

โพสต์

467

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
467
โพสต์ 2021-7-3 17:47:38 | ดูโพสต์ทั้งหมด

ooddog ตอบกลับเมื่อ 2021-6-30 10:24
อาจารย์ครับ VB.net มีวิธีการอย่างไรครับ

http://www.g2gsoft.com/webboard/ ... wthread&tid=159
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

GMT+7, 2024-4-19 22:56 , Processed in 0.184995 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

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