ขอทราบวิธีใช้ Code ตรวจสอบเลขประชาชนค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,260   7
URL.หัวข้อ / URL
ขอทราบวิธีใช้ Code ตรวจสอบเลขประชาชนค่ะ

พอดีค้นหาพบ หนูเห็นว่ามีประโยชน์มากอยากขอนำไปใช้ค่ะ เป็น Code ที่อาจารย์ yeadram กรุณาแนะนำไว้ แต่ไม่ทราบวิธีนำไปใช้ว่า ควรนำไปใส่ในเหตุการณ์ไหนอย่างไร
พบอยู่สอง Code ดังนี้ค่ะ
========================
Function ThaiIDcheck(ByVal IDnumber As String) As Boolean
Dim i, x As Integer
If Len(IDnumber) <> 13 Then GoTo chkFalse
For i = 1 To 13
If Not IsNumeric(Mid(IDnumber, i, 1)) Then GoTo chkFalse
Next
If CLng(Left(IDnumber, 1)) = 9 Then GoTo chkFalse 'ราชวงศ์.. ไม่เช็ค
If CLng(Left(IDnumber, 1)) = 0 Then GoTo chkFalse 'เป็นไปไม่ได้
            i = 0
        For j = 1 To 12
            i = i + ((14 - j) * CLng(Mid(IDnumber, j, 1)))
        Next
               x = Right(11 - (i Mod 11), 1)
            ThaiIDcheck = False
            If CInt(Right(IDnumber, 1)) = x Then ThaiIDcheck = True
Exit Function
chkFalse:
    ThaiIDcheck = False
End Function

==========================
Public Function ThaiIDcheck(ByVal IDnumber As String) As Boolean
Dim m1, m2 As Long
ThaiIDcheck = False
If CLng(Left(IDnumber, 1)) = 9 Then Exit Function   ' ราชวงศ์
If Len(IDnumber) <> 13 Then Exit Function
        For m1 = 1 To 12
            If Not IsNumeric(Mid(IDnumber, m1, 1)) Then
               Exit Function
            Else
               m2 = m2 + ((14 - m1) * Mid(IDnumber, m1, 1))
            End If
        Next
            If Right(IDnumber, 1) = Right(11 - (m2 Mod 11), 1) Then ThaiIDcheck = True
End Function
Private Sub PID_LostFocus()
if thaiidcheck(me.pid) =false then
...
...
else
...
...
end if
End sub

========================

ได้โปรดแนะนำวิธีนำไปใช้ให้หน่อยนะคะ
ขอบคุณค่ะ

7 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R21164
ไม่ควรใส่ใน LotFocus event ครับ ให้ใส่ใน BeforeUpdate event แทนครับ

Private Sub PID_BeforeUpdate(Cancel As Integer)

if not thaiidcheck(me.pid) then
   Cancel = True
   Msgbox "เลขที่บัตรประชาชนไม่ถูกต้อง"
...

else

...

...

end if

End sub
2 @R21165
ขอบคุณค่ะอาจารย์
หนูจะลองทำดูนะคะ
3 @R21177
โปรดช่วยแก้ไขเพิ่มเติมอีกหน่อยนะคะ

การตรวจสอบ ใช้งานได้ดีเลยค่ะ
แต่หนูอยากให้ Code ยืดหยุ่นผ่อนคลายอีกหน่อยค่ะ

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

เมื่อขึ้นเร็คคอร์ดใหม่ก็ตรวจสอบกันใหม่

ประมาณนี้ ต้องแก้ไข Code อย่างไรคะ


ขอรบกวนอีกหน่อยค่ะอาจารย์
4 @R21178
if not thaiidcheck(me.pid) then
   if Msgbox("เลขที่บัตรประชาชนไม่ถูกต้อง ยังยืนยันจะใส่เลขนี้หรือไม่", vbQuestion + vbDefaultButton2 + vbYesNo) = vbNo then
      Cancel = True
      Exit Sub
   end if
end if

' ข้างล่างนี้โค้ดที่ให้ทำเมื่อเลขบัตรประชาชนถูกต้อง หรือไม่ถูกต้องแต่ให้ปล่อยผ่าน
...

...

...

5 @R21179
สำเร็จแล้ว
ขอบคุณอย่างยิ่งค่ะอาจารย์
6 @R21384
ขอสอบถามเพิ่มเติม เพื่อเป็นความรู้ค่ะ

กรณี เลขประชาชนนั้นหนูทำเสร็จเรียบร้อยแล้วค่ะอาจารย์
แต่มันจะมีเลขรหัสอีกชุดหนึ่ง ซึ่งน่าจะเกี่ยวข้องกันคือ เลขรหัสประจำบ้าน

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

หากได้ ต้องเขียนโค้ดอย่างไรคะอาจารย์

ขอบคุณค่ะ
7 @R21385
อันนี้ผมไม่ทราบจริงๆครับ ต้องติดต่อกรมการปกครอง ก.มหาดไทยดูครับ เพราะถึงแม้จะมีการใส่ Check Digit เข้าไปก็ตาม แต่วิธีคำนวนหาก็มีหลายสูตรครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1935s