|
โปรเจคนี้จะเป็นการแสดงผลแบบเรียงลำดับ คือ เลือกจังหวัดก่อน จากนั้นก็จะแสดงผลอำเภอ เมื่อเลือกอำเภอก็จะแสดงผลรายชื่อตำบลออกมา จนท้ายที่สุดก็เป็นรหัสไปรษณีย์ โดยกระบวนการขั้นตอนต่างๆ จะเป็นไปในลักษณะ 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
|