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

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

[VB.NET] แสดงผลรหัสไปรษณีย์ประเทศไทย ด้วย ComboBox เพื่อทำการเลือกรายการ

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

310

กระทู้

501

โพสต์

6045

เครดิต

ผู้ดูแลระบบ

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

Rank: 9Rank: 9Rank: 9

เครดิต
6045




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

มาดูโค้ดกันเถอะ ...
  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: View the PostCode data in Thailand with ComboBox.
  8. ' /
  9. ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
  10. ' / You can modify and/or distribute without to inform the developer.
  11. ' / --------------------------------------------------------------------------------
  12. ' / Microsoft Visual Basic .NET (2010) & MS Access 2003+
  13. ' / ----------------------------------------------------------------------------------------
  14. Imports System.Data.OleDb

  15. Public Class frmMain
  16.     Dim Conn As OleDb.OleDbConnection
  17.     Dim Cmd As OleDb.OleDbCommand
  18.     Dim DR As OleDb.OleDbDataReader
  19.     Dim Statement As String

  20.     Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  21.         Me.CenterToScreen()
  22.         lblPostCode.Text = ""
  23.         txtRemark.Text = ""
  24.         Dim strPath As String = Application.StartupPath
  25.         strPath = strPath.ToLower()
  26.         strPath = strPath.Replace("\bin\debug", "")

  27.         Dim strConn As String = _
  28.             " Provider=Microsoft.ACE.OLEDB.12.0;" & _
  29.             " Data Source = " & strPath & "Data\PostCode2555.accdb; " & _
  30.             " Persist Security Info=False;"

  31.         Try
  32.             ' เปิดการเชื่อมต่อไฟล์ฐานข้อมูล
  33.             Conn = New OleDb.OleDbConnection(strConn)
  34.             Conn.Open()
  35.             '// โหลดรายการจังหวัดเข้ามาก่อน
  36.             Call LoadProvice()
  37.         Catch ex As Exception
  38.             MsgBox(ex.Message)
  39.             Application.Exit()
  40.         End Try
  41.     End Sub

  42.     ' / โหลดรายชื่อจังหวัดเข้าสู่ ComboBox
  43.     Sub LoadProvice()
  44.         lblPostCode.Text = ""
  45.         txtRemark.Text = ""
  46.         ' DISTINCT คือ หากชื่อรายการมันซ้ำ ต้องตัดให้เหลือเพียงรายการเดียว
  47.         Statement = _
  48.             " SELECT DISTINCT PostCode.Province " & _
  49.             " From PostCode ORDER BY PostCode.Province "
  50.         Cmd = New OleDbCommand(Statement, Conn)
  51.         DR = Cmd.ExecuteReader
  52.         While DR.Read()
  53.             cmbProvince.Items.Add(DR.Item("Province").ToString)
  54.         End While
  55.         DR.Close()
  56.         Cmd.Dispose()
  57.     End Sub

  58.     ' / เลือกรายชื่อจังหวัด และเอารายชื่ออำเภอเข้าสู่ ComboBox
  59.     Private Sub cmbProvince_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cmbProvince.SelectedValueChanged
  60.         cmbAmphur.Items.Clear()
  61.         cmbAmphur.Text = ""
  62.         cmbTumbon.Items.Clear()
  63.         cmbTumbon.Text = ""
  64.         lblPostCode.Text = ""
  65.         txtRemark.Text = ""
  66.         Statement = _
  67.             " SELECT DISTINCT PostCode.Amphur, PostCode.Province " & _
  68.             " From PostCode  " & _
  69.             " WHERE " & _
  70.             " Province = " & "'" & cmbProvince.Text & "'" & _
  71.             " ORDER BY PostCode.Amphur "
  72.         Cmd = New OleDbCommand(Statement, Conn)
  73.         DR = Cmd.ExecuteReader
  74.         While DR.Read()
  75.             cmbAmphur.Items.Add(DR.Item("Amphur").ToString)
  76.         End While
  77.         DR.Close()
  78.         Cmd.Dispose()
  79.     End Sub

  80.     ' / เลือกรายชื่ออำเภอ และเอารายชื่อตำบลเข้าสู่ ComboBox
  81.     Private Sub cmbAmphur_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cmbAmphur.SelectedValueChanged
  82.         cmbTumbon.Items.Clear()
  83.         cmbTumbon.Text = ""
  84.         lblPostCode.Text = ""
  85.         txtRemark.Text = ""
  86.         Statement = _
  87.             " SELECT DISTINCT PostCode.Amphur, PostCode.Province, PostCode.Tumbon " & _
  88.             " From PostCode  " & _
  89.             " WHERE " & _
  90.             " Province = " & "'" & cmbProvince.Text & "'" & _
  91.             " AND " & _
  92.             " Amphur = " & "'" & cmbAmphur.Text & "'" & _
  93.             " ORDER BY PostCode.Tumbon "
  94.         Cmd = New OleDbCommand(Statement, Conn)
  95.         DR = Cmd.ExecuteReader
  96.         While DR.Read()
  97.             cmbTumbon.Items.Add(DR.Item("Tumbon").ToString)
  98.         End While
  99.         DR.Close()
  100.         Cmd.Dispose()
  101.     End Sub

  102.     ' / เลือกรายชื่อตำบล และเอารหัสไปรษณีย์มาแสดงผลใน Label Control
  103.     Private Sub cmbTumbon_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cmbTumbon.SelectedValueChanged
  104.         lblPostCode.Text = ""
  105.         txtRemark.Text = ""
  106.         Statement = _
  107.             " SELECT PostCode.Province, PostCode.Amphur, PostCode.Tumbon, " & _
  108.             " PostCode.PostCode, PostCode.Remark " & _
  109.             " From PostCode  " & _
  110.             " WHERE " & _
  111.             " Province = " & "'" & cmbProvince.Text & "'" & _
  112.             " AND " & _
  113.             " Amphur = " & "'" & cmbAmphur.Text & "'" & _
  114.             " AND " & _
  115.             " Tumbon = " & "'" & cmbTumbon.Text & "'" & _
  116.             " ORDER BY PostCode.Tumbon "
  117.         Cmd = New OleDbCommand(Statement, Conn)
  118.         DR = Cmd.ExecuteReader
  119.         While DR.Read()
  120.             ' การนำเอา Double Quote มาวางขวางก่อน ก็เพราะเผื่อข้อมูลมันเป็น Null ก็จะเกิด Error
  121.             ' ใช้หลักการเดียวกันกับ VB6 เลยครับท่านผู้ชม
  122.             lblPostCode.Text = DR.Item("PostCode").ToString
  123.             txtRemark.Text = "" & DR.Item("Remark")
  124.         End While
  125.         DR.Close()
  126.         cmd.Dispose()
  127.     End Sub

  128.     Private Sub frmMain_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  129.         Conn.Close()
  130.         Me.Dispose()
  131.         Application.Exit()
  132.     End Sub
  133. End Class
คัดลอกไปที่คลิปบอร์ด


ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่

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

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

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

0

กระทู้

58

โพสต์

10

เครดิต

Member

Rank: 2

เครดิต
10
โพสต์ 2022-10-25 17:09:47 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

GMT+7, 2024-4-24 15:44 , Processed in 0.102531 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

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