나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  0
파일:     220120_만나이.accdb (460KB) 조회:  1188
제목:   [RE]만나이 구하는거
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >> 

=Format([월별급여]-DateSerial(IIf(Mid([주민등록번호],7,1)<3,"19" & Left([주민등록번호],2),"20" & Left([주민등록번호],2)),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)-1),"yy") 
위수식은 정확하지가 않은거 같아요 ㅠ

*고용일 대신해서 주민등록번호(470201-1234556)가 있으면 앞부분(1947/02/01)만 발췌해서 만나이 구하는게 가능할까요?
아무리 생각해봐도 잘 안되네요 ㅠ

Public Function Serviceyear(고용일 As Date, 월별급여 As Date) As Variant
 Dim i As Integer 
 Dim j As Integer 
 Dim k As Integer 
 Dim l As Integer 
 Dim m As Integer 
 Dim n As Integer 
  
   i = DateDiff("m", 고용일, 월별급여) - 1     
   If Right(고용일, 2) - Right(월별급여, 2) - 1 < 0 Then  j =1                                                 Else                                               
   j = 0                                              
   End If
   
   k = i + j    
   
   l = Int(k / 12)                                    
   m = k - l * 12                                     
   n = DateDiff("d", DateAdd("m", k, 고용일), 월별급여) 
   Serviceyear = Format(l, "00") & "y" & Format(m, "00") & "m" & Format(n, "00") & "d"
   End Function


==============[대왕초보님 글에 대한 답변입니다]==============


* 주민등록번호에 "-" 기호가 포함된 경우 입니다.
* format "yy"를 이용하면 1800년대 출생자만 100을 더해주면 조건이 없더라도 계산이 됩니다.


만나이: Nz(Format(Date()-DateSerial(IIf(Mid([주민등록번호],8,1)=0 Or Mid([주민등록번호],8,1)=9,"18" & Left([주민등록번호],2),IIf(Mid([주민등록번호],8,1)=1 Or Mid([주민등록번호],8,1)=2 Or Mid([주민등록번호],8,1)=5 Or Mid([주민등록번호],8,1)=6,"19" & Left([주민등록번호],2),"20" & Left([주민등록번호],2))),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)),"yyyy"))-1900

만나이2: IIf(Mid([주민등록번호],8,1)=9 Or Mid([주민등록번호],8,1)=0,100,0)+CInt(Format(Date()-DateSerial(Left([주민등록번호],2),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)),"yy"))


Public Function Age(주민등록번호 As String) As Integer

    Dim varYear As Integer
    Dim varBirthDay As Date
    Dim varAge As Variant
    
    Select Case Mid(주민등록번호, 8, 1)
        Case 1, 2, 5, 6
            varYear = 1900 + Left(주민등록번호, 2)
        Case 3, 4, 7, 8
            varYear = 2000 + Left(주민등록번호, 2)
        Case 9, 0
            varYear = 1800 + Left(주민등록번호, 2)
    End Select
    
    varBirthDay = DateSerial(varYear, Mid(주민등록번호, 3, 2), Mid(주민등록번호, 5, 2))
    
    varAge = DateDiff("yyyy", varBirthDay, Now)
    
    If Date < DateSerial(Year(Now), Month(varBirthDay), Day(varBirthDay)) Then
        varAge = varAge - 1
    End If

    Age = CInt(varAge)
        
End Function
 
[불량 게시물 신고]  
대왕초보결과가 이상하게 나오네요 ㅠ
예를들어; 390804-******* =182, 
551028-*******=166, 
620521-*******=59, 
660910-*******=155, 
700125-*******=-49(만나이,나이)51(모듈) 
이렇케 나오네요 ㅜ
01-20 (17:44)
삭제 ■신고
        
  

작성일 : 2022-01-20(17:21)
최종수정일 : 2022-01-20(17:21)
 


 ◎ 관련글

  제 목   작성자   날짜
만나이 구하는거 잘 안되네요 ㅠㅠ 대왕초보 2022-01-19
[RE]만나이 구하는거 황동준 2022-01-20
[RE]만나이 구하는거 황동준 2022-01-21