드로우홀릭 더베이직

함수 질문 드립니다

2018.05.19 10:18:02 조회 수 6870 추천 수 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 31968
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 28118
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23155
420 액세스 문의 입니다 (디자인보기 복사) 1 김상탁 2020-08-03 7358
419 필드 유효성 검사 추가 file IluvAccess 2016-06-02 7139
418 Gosub이 없는 Return. 에러. file 1 어렵다 2017-02-08 7062
417 아직 엑세스를 공부하고 있는 초보입니다. 도저히 이해가안되서,,,질문드립니다 1 김은교 2016-01-13 6983
416 폼 제작 및 신규 등록 아이콘 추가 방법 file 1 해지는소리 2018-06-21 6955
» 함수 질문 드립니다 1 김푸센 2018-05-19 6870
414 비용보고 사용 1 액기스 2015-08-22 6633
413 필드 및 폼 연결 관련 문의 2 액세스새내기 2018-01-28 6603
412 직장인을 위한 실무강의 질문 1 허수아비 2019-02-03 6568
411 폼 텍스트박스에 데이터 뿌려주기... 도와주세요 file 3 medcoop 2016-06-20 6489
410 폼에서 숏컷메뉴만들어서 사용하기 file 1 hirwigo 2015-11-26 6457
409 쿼리를 원본으로 하는 폼에서 테이블 데이터 수정하기 1 슈렉 2015-03-10 6454
408 엑셀의 데이터를 액세스로 불러올 때 궁금한 점이 있습니다. 1 녹차단팥빵 2015-05-15 6436
407 조회폼에서 자꾸 멈춥니다. 2 Michael 2019-05-31 6282
406 고등 수학문제 광대한 자료를 HWP로 갖고있어서 1 phillip 2014-12-26 6132
405 엑셀에 저장된 주민번호를 액세스로 가져올 땐 앞자리 0이 없어지는 문제.. 1 닥똥 2016-04-05 6116
404 DoCmd.OpenReport의 조건식에서 하위폼 필드 불러와서 인쇄할 수 있나요? file 3 하영감성원 2019-02-14 5933
403 개발문의 1 진승연 2023-01-31 5892
402 액세스테이블 필드속성을 하이퍼링크로 했을때 특정주소로 자동링크하는 법이 알고 싶습니다. 1 이영조 2016-09-05 5841
401 온라인 교육에 대하여 2 쿨영 2013-05-25 5817


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