드로우홀릭 더베이직

함수 질문 드립니다

2018.05.19 10:18:02 조회 수 6877 추천 수 0

회사 일 때문에 액세스를 이용하는데


가입일자로부터 이용기간을 더해서 만료일자를 자동으로 입력되게 하고 싶어서


만료일자 필드 기본값에


=dateadd('m',[이용기간],[가입일자])


라고 입력하니 '데이터베이스 엔진에서 유효성 검사식의 '이용기간' 필드 또는 '회원명단' 테이블의 기본값을 인식할 수 없습니다.'


라는 메시지가 떠서 인터넷에 검색해보니 이용기간 필드에 공백이 있어서 그렇다길래


=iif([이용기간]="","",dateadd("m",[이용기간],[가입일자])) 라고 입력해 봤지만 똑같은 메시지만 뜨네요 ㅠㅠ


뭐가 문젠지 모르겟어요 ㅜㅜ


profile

윈드님

2018.06.22 22:26:43
*.227.97.207

안녕하세요.


일단 테이블에서 사용 하신 것 같습니다만.

아래 링크를 보시면 필드의 기본값에는 다른 필드의 참조가 가능하지 않은 것 같습니다.

https://support.office.com/ko-kr/article/%ED%95%84%EB%93%9C-%EB%98%90%EB%8A%94-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EC%9D%98-%EA%B8%B0%EB%B3%B8%EA%B0%92-%EC%84%A4%EC%A0%95-99508d03-b28b-4057-9652-dac1c4c60d86?ui=ko-KR&rs=ko-KR&ad=KR#bm1


예를 들어 기본값을 현재 테이블의[이용기간]필드만을 지정해도 같은 오류가 나오게 됩니다.


이와 같이 만료일자를 자동 계산되게 하려면 폼에서 작업을 하셔야 합니다.


폼에서 [이용기간] 이나 [가입일자]를 새로입력/변경 하는 순간 자동 계산되게 하는 방법입니다.


첨부한 파일의 '폼1'을 보시면 [이용기간] 과 [가입일자] 에 AfterUpdate 이벤트를 걸어서 [만료일자]에 계산된 값을 넣어 주도록 하는 것입니다.


   Private Sub 가입일자_AfterUpdate()


    '이용기간의 값이 없거나 0인경우 만료일자를 지운다.

    If Nz(이용기간, 0) = 0 Then

        만료일자 = Null

        Exit Sub

    End If

    

    '가입일자의 값이 없는경우 만료일자를 지운다.

    If Nz(가입일자, "") = "" Then

        만료일자 = Null

        Exit Sub

    End If

    

    '만료일자 자동계산

    [만료일자] = DateAdd("d", [이용기간], [가입일자])

    

End Sub


Private Sub 이용기간_AfterUpdate()


    '이용기간의 값이 없거나 0인경우 만료일자를 지운다.

    If Nz(이용기간, 0) = 0 Then

        만료일자 = Null

        Exit Sub

    End If

    

    '가입일자의 값이 없는경우 만료일자를 지운다.

    If Nz(가입일자, "") = "" Then

        만료일자 = Null

        Exit Sub

    End If

    

    '만료일자 자동계산

    [만료일자] = DateAdd("d", [이용기간], [가입일자])

    

End Sub


폼1에서는 [이용기간] 과 [가입일자]에 각각 똑같은 코드가 들어 있기 때문에 무언가 수정 하려고 하면 두곳을 다 수정 해야 하는 불편함이 있습니다. 또한 깜빡하여 한곳만 수정하는 경우 결과값이 이상 해 질 수도 있겠지요?


그래서 폼2를 보시면 


Private Sub 가입일자_AfterUpdate()


    '만료일자 자동계산 프로시저 호출

    sbAddDate

    

End Sub


Private Sub 이용기간_AfterUpdate()


    '만료일자 자동계산 프로시저 호출

    sbAddDate

    

End Sub


Private Sub sbAddDate()


    '이용기간의 값이 없거나 0인경우 만료일자를 지운다.

    If Nz(이용기간, 0) = 0 Then

        만료일자 = Null

        Exit Sub

    End If

    

    '가입일자의 값이 없는경우 만료일자를 지운다.

    If Nz(가입일자, "") = "" Then

        만료일자 = Null

        Exit Sub

    End If

    

    '만료일자 자동계산

    [만료일자] = DateAdd("d", [이용기간], [가입일자])


End Sub

만료일자를 계산하는 프로시저는 따로 만들고 [이용기간], [가입일자]의 AfterUpdate 이벤트에서는 이 프로시저를 호출하는 기능만 넣어 줍니다.


이렇게 하는 경우, 한곳만 고치면 되겠지요? ^^


폼 3의 경우는 [만료일자] 컨트롤의 컨트롤 원본을 수식으로 대체 한 것입니다.  

이 경우는 폼에서는 [만료일자]를 보여주지만 테이블에 있는 필드가 아니기 때문에 테이블에는 저장되지 않습니다.


마지막으로 위에 적어주신 수식은 '일' 계산이 아니라 '월' 계산입니다. dateadd 에서 '일'의 경우 "d" 로 해 주셔야 합니다.

첨부
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31984
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 28134
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23157
520 특정 테이블의 필드 값을 다른 테이블로 옮기는 작업 1 1 thedream77 2014-12-18 46079
519 하나의 폼에서 데이터 입력 및 조회 구현 file 1 park 2018-08-22 45724
518 한 필드에서 여러개의 같은 데이터중 한개의 데이터만 가져오는 방법 2 백두산 2020-06-05 43279
517 추가쿼리에서 키위반 오류 문의드립니다 file 3 1 박형근 2022-07-17 36488
516 엑세스로 재고관리대장을 만들계획입니다. 2 1 똥구녕멍멍 2019-04-18 32687
515 외부데이터 "가져오기 오류 - 형식변환실패"의 의미는~? file 1 1 방랑김사깟 2017-02-19 32363
514 액셀의 데이타(하이퍼링크)를 복사해서 기존의 액세스 테이블에 붙이기 file 3 1 광야에서살아남기 2015-08-21 31448
513 이벤트 에러 file 4 1 엑세스29 2017-06-15 29884
512 엑세스 데이터베이스 일관성 에러 문의 1 박상순 2021-02-22 28774
511 목록상자 클릭시 클릭한 COL, ROW의 값 vb로 받아오기 2 쐬주도사 2017-12-15 28419
510 메시지박스의 체크박스로 테이블의 체크박스 컨트롤하기 1 공잇 2016-04-07 28127
509 엑셀파일 불러오기 오류 문의 file 3 기영주 2016-02-16 27829
508 vba에서 날짜 포멧 변환 질문드립니다. 1 1 쐬주도사 2017-12-18 27310
507 액세스 데이터베이스 딜레이 및 멈춤 문제 file 1 3 전맥 2016-10-11 26812
506 리스트박스의 선택된값을 해제 하려면 어떻게해야하나요, 1 김은교 2016-01-16 26259
505 통화 필드에 단위($ 또는 \)표시가 저장 안 되게 할 수 있을까요? 3 클로이 2019-07-04 26161
504 입력식에 유호하지 않는 날짜값이 있습니다. 2 sky3300 2019-03-26 25289
503 액세스 DB 파일 용량 문제 문의 드립니다. 4 바남풍 2019-08-26 25067
502 사진이나 그림 삽입 방법 1 notebook01 2016-05-01 25046
501 텍스트 가져오는 데 문제가 생겨요. 1 당연히나지 2021-01-24 24517


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.