กระทู้เก่าบอร์ด อ.Yeadram
2,295 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
ชื่อตาราง = 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
2 @R12883
Private Sub PID_LostFocus()
if thaiidcheck(me.pid) =false then
...
...
else
...
...
end if
End sub
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 ไปเลย ถ้าไม่ถูกต้องก็จะไม่ยอมให้ผ่านครับ ลองดูครับ
Time: 0.3021s
จุดแรกตรง IF ที่ 2 ตรง "ตรวจสอบ น่าจะตก " ไป
จุดที่ 2 ผมกรอกข้อมูลอะไร มันมาเข้า Else MsgBox "เลข 13 หลักไม่ครบตลอดครับ" ทั้งที่กรอกครบ 13 หลัก
ผมลองเอา IF แรกออก ก็มา Eror ที่บรรทัดนี้
Cal = Mid(Trim(num), i, 1) * (13 - (i - 1)) Type Mismatch
ฟิลด์นี้ ผมก็กำหนดเป็น Text เหมือนกัน ไม่ทราบว่าผิดพลาดตรงไหนครับ