การแสดงรหัสไปรษณีย์ จากการใช้เครื่องอ่านบัตรประชาชน



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

22 มิ.ย. 63 , 15:02:55
อ่าน 234 ครั้ง

mtaccess

ขอสอบถามการแสดงรหัสไปรษณีย์ จากการใช้เครื่องอ่านบัตรประชาชนค่ะ ปรกติบัตรประชาชนไม่มีข้อมูลรหัสไปรษณีย์ใช่ไหมคะ เวลาอ่านบัตรไม่พบข้อมูลรหัสไปรษณีย์ ถ้าเราต้องการให้เสียบบัตรประชาชนแล้วให้ขึ้นรหัสไปรษณีย์อัตโนมัติจากบัตร สามารถทำได้ด้วยวิธีไหนได้บ้างคะ รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

 

22 มิ.ย. 63 , 15:40:53
ตอบกลับ #1

PNR

ขอสอบถามการแสดงรหัสไปรษณีย์ จากการใช้เครื่องอ่านบัตรประชาชนค่ะ ปรกติบัตรประชาชนไม่มีข้อมูลรหัสไปรษณีย์ใช่ไหมคะ เวลาอ่านบัตรไม่พบข้อมูลรหัสไปรษณีย์ ถ้าเราต้องการให้เสียบบัตรประชาชนแล้วให้ขึ้นรหัสไปรษณีย์อัตโนมัติจากบัตร สามารถทำได้ด้วยวิธีไหนได้บ้างคะ รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

โดยปกติเครื่องอ่านบัตรประชาชนจะแสกนได้รายละเอียด ของที่อยู่แยกเป็นฟิลล์ๆไป (แต่บางตัว รายละเอียดจะติดกันเป็น ข้อความยาว เราจะทำวิธีนี้ไม่ได้)
สำหรับเครื่องตัวที่แยกฟิลล์มาให้เราสามารถนำไป Join Table เพื่อหารหัสไปรษณีย์ได้ครับ
โดยไฟล์ access ที่มีรายละเอียด เกี่ยวกับ จังหวัด อำเภอ ตำบล จนถึงรหัสไปรษณีย์ ดูได้จากไฟล์ที่ลิ้งด้านล่างครับ
https://www.thai-access.com/index.php?action=dlattach;topic=571.0;attach=481           
« แก้ไขครั้งสุดท้าย: 22 มิ.ย. 63 , 16:01:08 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

22 มิ.ย. 63 , 22:01:57
ตอบกลับ #2

mtaccess

ขอบคุณสำหรับข้อมูลนะคะ
ถ้าข้อมูลที่อ่านจากบัตรประชาชน เช่น ตำบล อำเภอ จังหวัด มาจากจังหวัดหรือตำบล อำเภอ เดียวกันแต่รูปแบบที่อ่านได้จากบัตรประชาชนจริงไม่เหมือนกัน เช่น จ.ขอนแก่น, ขอนแก่น, จังหวัดขอนแก่น ตามรูปนี้ ทำยังไงคะ รบกวนแนะนำด้วยค่ะ


 

23 มิ.ย. 63 , 15:03:38
ตอบกลับ #3

PNR

สร้างคิวรี่ขึ้นมาใช้ Replace เพื่อ ตัดคำออกเอาเฉพาะชื่อจังหวัดเช่น จ.ขอนแก่น หรือ จังหวัดขอนแก่น จะเหลือ ขอนแก่น ครับ
ส่วนอำเภอกับตำบลใช้วิธีเดี่ยวกันครับ
ในแต่ละฟิลล์ใส่โค้ดตัดคำแบบนี้เข้าไปนะครับ

จังหวัด: Replace(Replace([province],"จ.",""),"จังหวัด","")
อำเภอ: Replace(Replace([district],"อ.",""),"อำเภอ","")
ตำบล: Replace(Replace([Sub-district],"ต.",""),"ตำบล","")

เมื่อใช้ Replace แล้วก็นำคิวรี่นี้แหละไป Join Table ให้ได้เลขไปรษณีย์
ถ้าข้อมูล File Address มีคำว่าอำเภอก็ตัดคำที่ไม่ต้องการออกไปให้เหมือนกัน ก็ใช้ได้แล้วครับ

ผมมีตัวอย่าง อีกวิธี

โดยต้องตัดคำว่าแขวง ตัดคำว่าเขต ตัดคำว่าอำเภอ ตัดคำว่าจังหวัดออกไป
โดยการค้นหาคือ ค้นจาก ตำบล อำเภอ จังหวัด เรียงกันแบบนี้ แล้วจะได้รหัสไปรษณีย์นะครับ
เช่น ทุ่งพญาไท ราชเทวี กรุงเทพมหานคร จะได้ 10400
      บางรัก บางรัก กรุงเทพมหานคร จะได้ 10500 เป็นต้น
วิธีนี้ก็ใช้ประยุกต์กับชุดข้อมูลที่อยู่จาก เครื่องแสกนได้ลองไปทดสอบดูครับไม่รู้จะใช้ได้หรือเปล่า
โดยให้ดูการเชื่อมข้อมูลจาก Query DATA
« แก้ไขครั้งสุดท้าย: 23 มิ.ย. 63 , 16:22:22 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

23 มิ.ย. 63 , 17:02:52
ตอบกลับ #4

mtaccess

สร้างคิวรี่ขึ้นมาใช้ Replace เพื่อ ตัดคำออกเอาเฉพาะชื่อจังหวัดเช่น จ.ขอนแก่น หรือ จังหวัดขอนแก่น จะเหลือ ขอนแก่น ครับ
ส่วนอำเภอกับตำบลใช้วิธีเดี่ยวกันครับ
ในแต่ละฟิลล์ใส่โค้ดตัดคำแบบนี้เข้าไปนะครับ

จังหวัด: Replace(Replace([province],"จ.",""),"จังหวัด","")
อำเภอ: Replace(Replace([district],"อ.",""),"อำเภอ","")
ตำบล: Replace(Replace([Sub-district],"ต.",""),"ตำบล","")

เมื่อใช้ Replace แล้วก็นำคิวรี่นี้แหละไป Join Table ให้ได้เลขไปรษณีย์
ถ้าข้อมูล File Address มีคำว่าอำเภอก็ตัดคำที่ไม่ต้องการออกไปให้เหมือนกัน ก็ใช้ได้แล้วครับ

ผมมีตัวอย่าง อีกวิธี

โดยต้องตัดคำว่าแขวง ตัดคำว่าเขต ตัดคำว่าอำเภอ ตัดคำว่าจังหวัดออกไป
โดยการค้นหาคือ ค้นจาก ตำบล อำเภอ จังหวัด เรียงกันแบบนี้ แล้วจะได้รหัสไปรษณีย์นะครับ
เช่น ทุ่งพญาไท ราชเทวี กรุงเทพมหานคร จะได้ 10400
      บางรัก บางรัก กรุงเทพมหานคร จะได้ 10500 เป็นต้น
วิธีนี้ก็ใช้ประยุกต์กับชุดข้อมูลที่อยู่จาก เครื่องแสกนได้ลองไปทดสอบดูครับไม่รู้จะใช้ได้หรือเปล่า
โดยให้ดูการเชื่อมข้อมูลจาก Query DATA

ถ้าข้อมูลอ่านจากบัตรมาเป็นแบบนี้เลยนะคะ แต่ในฐานข้อมูลไม่มีแขวงนำหน้าคลองจั่น แนะนำด้วยค่ะ ข้อมูลอ่านจากเครื่องอ่านบัตรประชาชนโดยตรง


 

23 มิ.ย. 63 , 19:34:22
ตอบกลับ #5

PNR

น้องไปแก้ Event ของ คอมโบบ๊อก cb_district AfterUpdate  เป็นแบบนี้นะครับ

Private Sub cb_district_AfterUpdate()
    Me.txt_zipcode = DLookup("post_code", "tb_district", "district_th= '" & Replace(Me.cb_district, "แขวง", "") & "' AND amphur_id = " & Me.cb_amphur.Column(0, Me.cb_amphur.ListIndex))
End Sub

โดยเครื่องแสกนถ้าได้คำว่าแขวงติดมา แต่ตอนจะแสดงข้อมูลเราใช้ Replace ตัดแขวงออกให้ก็จะแสดงข้อมูลได้ปกติ
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

25 มิ.ย. 63 , 13:57:14
ตอบกลับ #6

mtaccess

น้องไปแก้ Event ของ คอมโบบ๊อก cb_district AfterUpdate  เป็นแบบนี้นะครับ

Private Sub cb_district_AfterUpdate()
    Me.txt_zipcode = DLookup("post_code", "tb_district", "district_th= '" & Replace(Me.cb_district, "แขวง", "") & "' AND amphur_id = " & Me.cb_amphur.Column(0, Me.cb_amphur.ListIndex))
End Sub

โดยเครื่องแสกนถ้าได้คำว่าแขวงติดมา แต่ตอนจะแสดงข้อมูลเราใช้ Replace ตัดแขวงออกให้ก็จะแสดงข้อมูลได้ปกติ

ไม่ได้ค่ะ จังหวัดกับอำเภอก็น่าจะมีคำว่าจังหวัดกับเขต อำเภอมาด้วย รบกวนแนะนำอีกครั้งด้วยค่ะ ขอบคุณค่ะ


 

25 มิ.ย. 63 , 14:34:07
ตอบกลับ #7

PNR

ลองดูตัวอย่างนี้นะครับ
โค๊ด: [Select]
Private Sub txt_district_AfterUpdate()
Dim Strprovince, Stramphur, Strdistrict As String
Strprovince = Replace(Replace(Replace(Me.txt_province, "จังหวัด", ""), "จ.", ""), "กรุงเทพฯ", "กรุงเทพมหานคร")
Stramphur = Replace(Replace(Replace(Me.txt_amphur, "อำเภอ", ""), "เขต", ""), "อ.", "")
Strdistrict = Replace(Replace(Replace(Me.txt_district, "แขวง", ""), "ตำบล", ""), "ต.", "")

    Me.txt_zipcode = DLookup("post_code", "DATA", "district_th= '" & Strdistrict & "' AND amphur_TH = '" & Stramphur & "' and Province_th = '" & Strprovince & "'")
End Sub

ผมใช้การสร้างตัวแปรมา Replace ให้เหมือนกับข้อมูลในฐาน แล้ว Dlookup กับคิวรี่ชื่อ DATA ครับ
ถ้ามีแบบไหนผิดพลาดเพิ่มเติมอีกก็บอกได้นะครับทำกันจนจะสำเร็จละครับ สู้ๆ
« แก้ไขครั้งสุดท้าย: 25 มิ.ย. 63 , 14:49:28 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

29 มิ.ย. 63 , 09:56:12
ตอบกลับ #8

mtaccess

ลองดูตัวอย่างนี้นะครับ
โค๊ด: [Select]
Private Sub txt_district_AfterUpdate()
Dim Strprovince, Stramphur, Strdistrict As String
Strprovince = Replace(Replace(Replace(Me.txt_province, "จังหวัด", ""), "จ.", ""), "กรุงเทพฯ", "กรุงเทพมหานคร")
Stramphur = Replace(Replace(Replace(Me.txt_amphur, "อำเภอ", ""), "เขต", ""), "อ.", "")
Strdistrict = Replace(Replace(Replace(Me.txt_district, "แขวง", ""), "ตำบล", ""), "ต.", "")

    Me.txt_zipcode = DLookup("post_code", "DATA", "district_th= '" & Strdistrict & "' AND amphur_TH = '" & Stramphur & "' and Province_th = '" & Strprovince & "'")
End Sub

ผมใช้การสร้างตัวแปรมา Replace ให้เหมือนกับข้อมูลในฐาน แล้ว Dlookup กับคิวรี่ชื่อ DATA ครับ
ถ้ามีแบบไหนผิดพลาดเพิ่มเติมอีกก็บอกได้นะครับทำกันจนจะสำเร็จละครับ สู้ๆ

ข้อมูลยังไม่ได้ตามที่ต้องการค่ะ ข้อมูลผู้สมัครทั่วจังหวัดค่ะ ไม่ใช่มีแค่กรุงเทพฯ เวลาเสียบบัตรข้อมูลบัตรไม่เหมือนกันอีกค่ะแต่ละคนแต่ละจังหวัด อยากให้เสียบบัตรแล้วให้รหัสไปรษณีย์ขึ้นให้เลยค่ะ เพื่อลดขั้นตอนในการหารหัสไปรษณีย์ รบกวนแนะนำด้วยนะคะ พอจะมีวิธีทำได้ไหม ขอบคุณค่ะ


ตรงช่อง District รับค่าจากการเสียบบัตรไม่ได้ค่ะ แสดง error ตามนี้


ถ้าต้องการให้แสดงรหัสไปรษณีย์ หลังจากอ่านข้อมูลจากการเสียบบัตร โดยไม่ต้องกดปุ่มแสดงรหัสไปรษณีย์
« แก้ไขครั้งสุดท้าย: 29 มิ.ย. 63 , 10:04:19 โดย mtaccess »

 

29 มิ.ย. 63 , 10:11:13
ตอบกลับ #9

mtaccess

ทำได้แล้วค่ะ ขอบคุณมากๆนะคะ

 

29 มิ.ย. 63 , 10:15:42
ตอบกลับ #10

PNR

ทำได้แล้วค่ะ ขอบคุณมากๆนะคะ

น้องลองดูก่อน ติดตรงส่วนไหน หรือเสียบบัตรอันไหนแล้วไม่แสดงข้อมูล ส่งมาให้ดูครับเพื่อปรับแก้ไขเพิ่มเติม
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

29 มิ.ย. 63 , 16:02:15
ตอบกลับ #11

mtaccess

ทำได้แล้วค่ะ ขอบคุณมากๆนะคะ

น้องลองดูก่อน ติดตรงส่วนไหน หรือเสียบบัตรอันไหนแล้วไม่แสดงข้อมูล ส่งมาให้ดูครับเพื่อปรับแก้ไขเพิ่มเติม

ลองทำใน Access ทำได้ค่ะ แต่พอย้าย Database ไปเป็น SQL Server ข้อมูลเป็น nvarchar ค่ะ จึงทำให้ค้นหาข้อมูลไม่ได้รึเปล่าคะ รบกวนแนะนำด้วยค่ะ

 

29 มิ.ย. 63 , 16:13:06
ตอบกลับ #12

mtaccess

ลองทดสอบสร้าง Table Test ดู ตอนคีย์เป็นภาษาไทยนะคะ พอบันทึกจากภาษาไทยแสดงเป็น ?????



 

29 มิ.ย. 63 , 16:15:55
ตอบกลับ #13

PNR

เปลี่ยน Server Collation, Database Collation ตามที่อาจารย์สันติสุข แนะนำในโพสก่อนหน้านี้หรือยังครับ
https://www.thai-access.com/index.php?topic=1308.msg5790#msg5790

ตรงส่วนนี้ สร้างเป็น Varchar ได้ไหม
:meaw: :grin: :shout:
 

29 มิ.ย. 63 , 16:18:23
ตอบกลับ #14

mtaccess

เปลี่ยน Server Collation, Database Collation ตามที่อาจารย์สันติสุข แนะนำในโพสก่อนหน้านี้หรือยังครับ
ตรงส่วนนี้ สร้างเป็น Varchar ได้ไหม

ข้อมูลแก้ไข Type จาก nvarchar เป็น varchar ไม่ได้ค่ะ SQL ไม่ให้เปลี่ยน เนื่องจาก Export ข้อมูลมาจาก Access ข้อมูลหลาย Record แล้วด้วยค่ะ

 

29 มิ.ย. 63 , 16:34:59
ตอบกลับ #15

mtaccess

เปลี่ยน Server Collation, Database Collation ตามที่อาจารย์สันติสุข แนะนำในโพสก่อนหน้านี้หรือยังครับ
https://www.thai-access.com/index.php?topic=1308.msg5790#msg5790

ตรงส่วนนี้ สร้างเป็น Varchar ได้ไหม

ถ้าแก้ไขจะไม่มีผลกระทบกับข้อมูลเดิมที่มีอยู่ใช่ไหมคะ แล้วต้องทำตอนไม่มีคนใช้รึเปล่าคะ เปลี่ยน Server collation

 


บอร์ดเรียนรู้ Access สำหรับคนไทย