| 
 | 
 
  
 
โปรเจคนี้จะเป็นการแสดงผลแบบเรียงลำดับ คือ เลือกจังหวัดก่อน จากนั้นก็จะแสดงผลอำเภอ เมื่อเลือกอำเภอก็จะแสดงผลรายชื่อตำบลออกมา จนท้ายที่สุดก็เป็นรหัสไปรษณีย์ โดยกระบวนการขั้นตอนต่างๆ จะเป็นไปในลักษณะ Event/Driven อย่างชัดเจน เช่น เกิดเหตุการณ์ (Event) โดยการเลือกชื่อจังหวัดจาก ComboBox จากนั้นสั่งให้ไปทำอะไร (Driven) ก็คือการทำ Query ข้อมูลอำเภอที่อยู่ในจังหวัดนั้นๆออกมา ... หลักการในการทำ Query ที่สำคัญคือ DISTINCT เป็นการคัดกรองข้อมูลที่ซ้ำกันให้เหลือเพียง 1 เดียว ...  
 
  
ตัวอย่างการใช้งาน DISTINCT เพื่อทำการกรองข้อมูลที่ซ้ำกัน ให้เหลือเพียงค่าเดียว  
 
มาดูโค้ดกันเถอะ ...  
- ' / --------------------------------------------------------------------------------
 
 - ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
 
 - ' / eMail : thongkorn@hotmail.com
 
 - ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
 
 - ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
 
 - ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
 
 - ' / Purpose:  Information PostCode data in Thailand.
 
 - ' / Microsoft Visual Basic 6.0 (SP1) + FarPoint Spread 8.0
 
 - ' /
 
 - ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
 
 - ' / You can modify and/or distribute without to inform the developer.
 
 - ' / --------------------------------------------------------------------------------
 
 - Option Explicit
 
  
- '// Public variable which can see in this only project.
 
 - Dim ConnDB As New ADODB.Connection
 
 - Dim RS As New ADODB.Recordset
 
 - Dim Statement As String
 
  
- Public Sub OpenDataBase()
 
 - On Error GoTo Err_Handler
 
 - Dim DB_File As String
 
 -     DB_File = App.Path
 
 -     If Right$(DB_File, 1) <> "" Then DB_File = DB_File & ""
 
 -     DB_File = DB_File & "PostCode2555.MDB"
 
 -     ' เชื่อมต่อไฟล์ข้อมูล - Open Connection
 
 -     Set ConnDB = New ADODB.Connection
 
 -     ConnDB.ConnectionString = _
 
 -         " Provider=Microsoft.Jet.OLEDB.4.0;" & _
 
 -         " Data Source=" & DB_File & ";" & _
 
 -         " Persist Security Info=False"
 
 -     ConnDB.Open
 
 -     Exit Sub
 
  
- Err_Handler:
 
 -     MsgBox "Error : " & Err.Number & " " & Err.Description
 
 -     End
 
 - End Sub
 
  
- Private Sub Form_Load()
 
 -     Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
 
 -     ' เคลียร์หน้าจอ
 
 -     cmbProvince.Clear
 
 -     cmbAmphur.Clear
 
 -     cmbTumbon.Clear
 
 -     lblPostCode.Caption = ""
 
 -     txtRemark.Text = ""
 
 -     
 
 -     ' เชื่อมต่อฐานข้อมูล
 
 -     Call OpenDataBase
 
 -     ' โหลดรายชื่อจังหวัดเข้า ComboBox
 
 -     Call LoadProvince
 
 - End Sub
 
  
- ' / -----------------------------------------------------------------------------------------------------------
 
 - ' Load รายการจังหวัดเข้ามาจากตาราง PostCode
 
 - ' / -----------------------------------------------------------------------------------------------------------
 
 - Sub LoadProvince()
 
 -     Set RS = New ADODB.Recordset
 
 -     ' DISTINCT คือ หากชื่อรายการมันซ้ำ ต้องตัดให้เหลือเพียงรายการเดียว
 
 -     Statement = _
 
 -             "SELECT DISTINCT PostCode.Province " & _
 
 -             " From PostCode ORDER BY PostCode.Province "
 
 -     Set RS = ConnDB.Execute(Statement, , adCmdText)
 
 -     Do Until RS.EOF
 
 -         cmbProvince.AddItem "" & RS("Province")
 
 -         RS.MoveNext
 
 -     Loop
 
 -     RS.Close:    Set RS = Nothing
 
 - End Sub
 
  
- ' / -----------------------------------------------------------------------------------------------------------
 
 - ' เลือกรายชื่อจังหวัด แล้วต้องเอาข้อมูลรายชื่ออำเภอมาแสดงผลใน ComboBox
 
 - ' / -----------------------------------------------------------------------------------------------------------
 
 - Private Sub cmbProvince_Click()
 
 -     cmbAmphur.Clear
 
 -     cmbTumbon.Clear
 
 -     lblPostCode.Caption = ""
 
 -     txtRemark.Text = ""
 
 -     
 
 -     Set RS = New ADODB.Recordset
 
 -     Statement = _
 
 -             "SELECT DISTINCT PostCode.Amphur, PostCode.Province " & _
 
 -             " From PostCode  " & _
 
 -             " WHERE " & _
 
 -             " Province = " & "'" & cmbProvince.Text & "'" & _
 
 -             " ORDER BY PostCode.Amphur "
 
 -     Set RS = ConnDB.Execute(Statement, , adCmdText)
 
 -     Do Until RS.EOF
 
 -         cmbAmphur.AddItem "" & RS("Amphur")
 
 -         RS.MoveNext
 
 -     Loop
 
 -     RS.Close:    Set RS = Nothing
 
 - End Sub
 
  
- ' / -----------------------------------------------------------------------------------------------------------
 
 - ' เลือกอำเภอ แล้วจะต้องนำเอาข้อมูลรายชื่อตำบลเข้ามาไว้ใน ComboBox
 
 - ' / -----------------------------------------------------------------------------------------------------------
 
 - Private Sub cmbAmphur_Click()
 
 -     cmbTumbon.Clear
 
 -     lblPostCode.Caption = ""
 
 -     txtRemark.Text = ""
 
 -     
 
 -     Set RS = New ADODB.Recordset
 
 -     ' เงื่อนไขทดสอบ ใช้ชื่อจังหวัด และ อำเภอด้วย
 
 -     ' DISTINCT คือ หากชื่อรายการมันซ้ำ ต้องตัดให้เหลือเพียงรายการเดียว
 
 -     Statement = _
 
 -             "SELECT DISTINCT PostCode.Amphur, PostCode.Province, PostCode.Tumbon " & _
 
 -             " From PostCode  " & _
 
 -             " WHERE " & _
 
 -             " Province = " & "'" & cmbProvince.Text & "'" & _
 
 -             " AND " & _
 
 -             " Amphur = " & "'" & cmbAmphur & "'" & _
 
 -             " ORDER BY PostCode.Tumbon "
 
 -     Set RS = ConnDB.Execute(Statement, , adCmdText)
 
 -     Do Until RS.EOF
 
 -         cmbTumbon.AddItem "" & RS("Tumbon")
 
 -         RS.MoveNext
 
 -     Loop
 
 -     RS.Close:    Set RS = Nothing
 
 - End Sub
 
  
- ' / -----------------------------------------------------------------------------------------------------------
 
 - ' เลือกตำบล แล้วจะแสดงรหัสไปรษณีย์
 
 - ' / -----------------------------------------------------------------------------------------------------------
 
 - Private Sub cmbTumbon_Click()
 
 -     lblPostCode.Caption = ""
 
 -     txtRemark.Text = ""
 
 -     
 
 -     Statement = _
 
 -             "SELECT PostCode.Province, PostCode.Amphur, PostCode.Tumbon, " & _
 
 -             " PostCode.PostCode, PostCode.Remark " & _
 
 -             " From PostCode  " & _
 
 -             " WHERE " & _
 
 -             " Province = " & "'" & cmbProvince.Text & "'" & _
 
 -             " AND " & _
 
 -             " Amphur = " & "'" & cmbAmphur & "'" & _
 
 -             " AND " & _
 
 -             " Tumbon = " & "'" & cmbTumbon & "'" & _
 
 -             " ORDER BY PostCode.Tumbon "
 
 -     Set RS = ConnDB.Execute(Statement, , adCmdText)
 
 -     lblPostCode.Caption = "" & RS("PostCode")
 
 -     txtRemark.Text = "" & RS("Remark")
 
 -     RS.Close:   Set RS = Nothing
 
 - End Sub
 
  
- Public Sub CloseDataBase()
 
 -     If ConnDB.State = adStateOpen Then
 
 -         ConnDB.Close
 
 -         Set ConnDB = Nothing
 
 -     End If
 
 - End Sub
 
  
- Private Sub Form_Unload(Cancel As Integer)
 
 -     Call CloseDataBase
 
 -     Set frmMain = Nothing
 
 -     End
 
 - End Sub
 
  คัดลอกไปที่คลิปบอร์ด 
ดาวน์โหลดโค้ดต้นฉบับ VB6 และฐานข้อมูลรหัสไปรษณีย์ได้ที่นี่  
 
 |   
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  
 
x
 
 
 
 
 |