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

 대왕초보 (yh--ko)

추천:  0
파일:     근무년월일-만나이.xlsx (13.5KB) 조회:  1659
제목:   정확히 일치가 안되는거 같아서요-다시 질문 올립니다ㅜ
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

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

* 아래줄에 질문을 작성하세요 >> 
아래같이 모듈을 해보니 엑셀(첨부)과 정확하게 일치가 안되는데 뭐가 문제인지 알려주시면 감사하겠습니다. 자꾸 질문드려 죄송합니다ㅜ
 
Public Function Age(주민등록번호 As String, 월별급여 As Date) As Integer

     Dim varYear As Integer
     Dim varBirthDay As Date
     Dim varAge As Variant
     
     Select Case Mid(주민등록번호, 7, 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, 월별급여)
     
     If Date < DateSerial(Year(월별급여), Month(varBirthDay), Day(varBirthDay)) Then
         varAge = varAge - 1
     End If

     Age = CInt(varAge)
         
 End Function

 
[불량 게시물 신고]  
황동준제가 답답해서 미쳐버릴꺼 같네요 ㅠㅠ

1. 주민등록번호와 월별급여는 무슨관계인지요?
2. 입사일 퇴사일은 주민등록번호와 어떤 계산이 필요한가요?
3. 근무년월일 날짜포맷인가요?

도데체 뭘 구하고 싶으신건지 이해가 잘 안됩니다.
01-27 (10:09)
삭제 ■신고
대왕초보그게 말입니다.
일단 죄송합니다.
입사일(주민등록번호;앞6자리)로 대입하고 퇴사일(기준일-월별급여)로 대입하면 만나이가 근무년월수가 되는거라 날짜 계산하는거는 일치하는거라서요.  근무년월수가 55/02/29 라면 만나이가 55세가 되는거라 생각하시면 됩니다. 54/12/31 이라면 54세가 되는거고요. 55/00/01이면 만55세 되는거라 생각하시면 됩니다... 근데 위 모듈로는 엑셀에서는 54세인데 55세로 나와서요 ㅜ
엑셀에 나오는 값은 검증용으로 체크한거라 생각하시면 됩니다.  결론적으로 만나이 구하는겁니다. 
 죄송합니다. 지금까지 잘 알려주셔서 감사한데 염치가 없네요ㅜ
01-27 (10:39)
삭제 ■신고
황동준아 죄송할일은 절대 아닙니다. 제가 댓글을 너무 공격적으로 달았나봅니다. 죄송합니다. ㅠㅠ 저도 알려드리고 싶은데 잘 안돼서 답답해서 그랬습니다.

일단 입사일 퇴사일 모두 날짜이므로 주민번호관련은 생각하지 마시고 datediff 로 년도만 구하면 됩니다.
아래 코드로 바꿔주세요. 바뀐 변수명 유의 하시고
Public Function workYears(입사일 As Date, 퇴사일 As Date) As Integer

    workYears = DateDiff("yyyy", 입사일, 퇴사일)
    
    If 퇴사일 < DateSerial(Year(퇴사일), Month(입사일), Day(입사일)) Then
        workYears = workYears - 1
    End If

    workYears = CInt(workYears)
        
End Function

쿼리에서는 
     근속년수: workYears([입사일],[퇴사일])
형태로  적용하시면 됩니다.

아참 1966-09-10 -> 2021-12-09 는 55년이 맞는거 아닌가요?
01-27 (11:15)
삭제 ■신고
대왕초보1966-09-10  -->  2021-09-08   결과값이 54년이 나와야 하는데 55년이 나오네요. 생일이 지나지 않았는데 54세가 나와야 하는데 이렇게 결과가 나오네요.
1966-09-10  ---> 2021-01-12 결과값이 54 나와야 하는데 55세가 나오네요.
생일 이후는 55세가 나오는데 생일이전에는 54세가 나와야 하는데 55세가 나와서요 ㅠ
제가 뭐 잘못한건지 알수가 없어서요 ㅠ
01-27 (11:55)
삭제 ■신고
        
  

작성일 : 2022-01-27(09:33)
최종수정일 : 2022-01-27(09:33)
 


 ◎ 관련글

  제 목   작성자   날짜
정확히 일치가 안되는거 같아서요-다시 질문 올립니다ㅜ 대왕초보 2022-01-27
[RE]정확히 일치가 안되는거 같아서요 황동준 2022-01-27
[RE]해결되었습니다. 고맙고 감사합니다^^ 대왕초보 2022-01-27