본문 바로가기

SMH/Module

VB_주민번호체크(내국인+외국인)

' str : 주민번호 입력(13자리)

Function chk_Jumin(str As String) As Boolean
    Dim i_Sum           As Integer
    Dim i_Odd           As Integer
    Dim i_Arr(13)       As Integer
    Dim s_Jumin1        As String
    Dim s_Jumin2        As String
    Dim s_YY            As String
    Dim s_MM            As String
    Dim s_DD            As String
    Dim i_N             As Integer

    Dim Genda           As String
    Dim i               As Integer
    
    s_Jumin1 = Mid(str, 1, 6)
    s_Jumin2 = Mid(str, 7, 7)
    
    s_YY = Mid(s_Jumin1, 1, 2)
    s_MM = Mid(s_Jumin1, 3, 2)
    s_DD = Mid(s_Jumin1, 5, 2)
    Genda = Mid(s_Jumin2, 1, 1)
   

    i_N = 2
    
    If Len(s_Jumin1) <> 6 Then
        MsgBox "생년월일을 정확히 입력하세요. 생년월일 :" + s_Jumin1, vbOKOnly
        GoSub sub_Jumin
    ElseIf Len(s_Jumin2) <> 7 Then
        MsgBox "주민등록번호뒤 번호을 정확히 입력 하세요. 뒤자리 :" + s_Jumin2, vbOKOnly
        GoSub sub_Jumin
    End If
    If CInt(Genda) < 1 And CInt(Genda) > 9 Then
        MsgBox "주민등록번호뒤 성별이 정확하지 않습니다.. 뒤자리 :" + s_Jumin2, vbOKOnly
        GoSub sub_Jumin
    End If
    If Mid(s_Jumin2, 6, 1) < 1 And Mid(s_Jumin2, 6, 1) > 9 Then
        MsgBox "주민등록 등록자 구분이 잘못 되었습니다.", vbOKOnly
        GoSub sub_Jumin
    End If
    
    If s_YY < "00" And s_YY > "99" And s_MM < "01" And s_MM > "12" And s_DD < "01" And s_DD > "31" Then
        MsgBox "주민등록 앞자리을 다시 입력하세요.", vbOKOnly
        GoSub sub_Jumin
    End If
    
   
    For i = 1 To 12
        i_Sum = i_Sum + (CInt(Mid(str, i, 1)) * i_N)
        i_N = i_N + 1
        If i_N = 10 Then i_N = 2
    Next i
    
    i_Sum = 11 - (i_Sum Mod 11)
    '// 내국인 경우
    If CInt(Mid(s_Jumin2, 1, 1)) < 5 Or CInt(Mid(s_Jumin2, 1, 1)) = 9 Then
        If i_Sum > 9 Then i_Sum = i_Sum Mod 10
        If i_Sum <> CInt(Mid(s_Jumin2, 7, 1)) Then
            'MsgBox "주민등록번호가 다릅니다. 확인 바랍니다." + s_Jumin1 + "-" + s_Jumin2, vbOKOnly
            GoSub sub_Jumin
        End If
    ElseIf CInt(Mid(s_Jumin2, 1, 1)) > 4 And CInt(Mid(s_Jumin2, 1, 1)) < 9 Then
        If i_Sum >= 10 Then i_Sum = i_Sum - 10
        i_Sum = i_Sum + 2
        If i_Sum >= 10 Then i_Sum = i_Sum - 10
        If i_Sum <> CInt(Mid(s_Jumin2, 7, 1)) Then
            'MsgBox "재외국인 주민등록번호가 다릅니다. 확인바랍니다." + str, vbOKOnly
            GoSub sub_Jumin
        End If
    End If
    chk_Jumin = True
    Exit Function
'============================================

sub_Jumin:
    chk_Jumin = False
    Exit Function
End Function

'SMH > Module' 카테고리의 다른 글

PB_DLL File Exists Check  (0) 2011.01.01
PB_File log make  (0) 2011.01.01
VB_file write  (0) 2011.01.01
VB_farpoint Initailize  (0) 2011.01.01
VB_DB Connection(MSSQL/MYSQL/DB2/ORACLE)  (2) 2011.01.01