ตรวจสอบเลขประชาชน 13 หลักที่กรอก ถูกต้องตามหลักการ
กระทู้เก่าบอร์ด อ.Yeadram

 2,244   3
URL.หัวข้อ / URL
ตรวจสอบเลขประชาชน 13 หลักที่กรอก ถูกต้องตามหลักการ

ตรวจสอบเลขประชาชน 13 หลักที่กรอก ถูกต้องตามหลักการ ของกระทรวงมหาดไทยครับ....

ชื่อตาราง                                 = OFFICERS
ชื่อฟิลด์ที่ตรวจสอบ                   = PID
-------------------------------------------
ชื่อฟอร์ม                                  = OFFICERS
ชื่อออบเจ็คที่ใช้ (Text Box)        = PID
เหตุการณืที่ใช้                          = LostFocus หรืออย่างอื่น


Private Sub PID_LostFocus()

Dim Cal As Integer
Dim Sum As Integer
Dim Last_Card As Integer
Dim chk As Integer
Dim C2 As Integer
Dim C1 As Integer

num = PID.Text
If Len(Trim(num)) = 13 Then
                    Sum = 0
                    For i = 1 To 12
                        Cal = Mid(Trim(num), i, 1) * (13 - (i - 1))
                        Sum = Sum + Cal
                    Next
                    C1 = 11 - (Sum Mod 11)
                    Last_Card = Right(C1, 1)
                    C2 = Mid(Trim(num), 13, 1)
                    If Last_Card <> C2 Then
                        If (MsgBox("เลขประจำตัวประชาชนผิดพลาด" & Chr(13) & Chr(10) & "ต้องการแก้ไขใหม่หรือไม่", vbYesNo, "ตรวจสอบ) = vbYes) Then
                     
                                    Chk_PID = True
                                    PID.SetFocus
                            Else
                                    FNAME.SetFocus
                            End If
                    Else
                                 FNAME.SetFocus
                    End If
Else
MsgBox "เลขประชาชน 13 หลักมีไม่ครบ", vbOKOnly, "ตรวจสอบ"
Chk_PID = True
PID.SetFocus

End If

End Sub

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

1 @R12878
ผมลองทำดูแล้วเจอ Err หลายที่ครับบางจุดเจอแล้วบางจุดไม่รู้เกิดจากอะไร
จุดแรกตรง IF ที่ 2 ตรง "ตรวจสอบ น่าจะตก " ไป
จุดที่ 2 ผมกรอกข้อมูลอะไร มันมาเข้า Else MsgBox "เลข 13 หลักไม่ครบตลอดครับ"    ทั้งที่กรอกครบ 13 หลัก
ผมลองเอา IF แรกออก ก็มา Eror ที่บรรทัดนี้
Cal = Mid(Trim(num), i, 1) * (13 - (i - 1)) Type Mismatch
ฟิลด์นี้ ผมก็กำหนดเป็น Text เหมือนกัน ไม่ทราบว่าผิดพลาดตรงไหนครับ


2 @R12883
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
3 @R12919
ความคิดเห็นนะครับ ผมจะทำตั่งแต่ตอนสร้างตารางเลย บังคับให้ใส่เป็นตัวเลข ด้วยการใส่ Mask filter ไปเลย ถ้าไม่ถูกต้องก็จะไม่ยอมให้ผ่านครับ ลองดูครับ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2733s