드로우홀릭 더베이직

함수 질문 드립니다

2018.05.19 10:18:02 조회 수 6412 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31088
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 27403
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 22917
296 직장인을 위한 실무엑세스에서 교재 및 동영상강의의 교육화면과 실제 제 컴퓨터에서 실행한 파일이 다릅니다. file 1 하샤 2018-09-26 3655
295 쿼리 조건 식 1 수달 2018-09-14 4348
294 하나의 폼에서 데이터 입력 및 조회 구현 file 1 park 2018-08-22 44084
293 실무 액세스를 읽고 있습니다. 1 호수달 2018-08-18 3855
292 피벗형데이터를 db형데이터로 변경하는 방법 file 작왕 2018-08-13 3078
291 엑세스 다른 테이블 목록 불러오기?(bom) file 1 엑세스와엑셀 2018-08-06 13506
290 [개발 의뢰 건] 해당 내용이 엑세스로 구현이 가능한지 궁금합니다. 1 livinona91 2018-07-30 3723
289 액세스 조회 할때 원하는 거래처를 모두 조회할 수 있는 방법이 있을까요? file 2 써노~ 2018-07-20 11860
288 엑세스 2016 피벗차트 엑세스배움이 2018-07-19 7866
287 조회폼 만드는 중 레이블과 텍스트상자 중복연결이 안되요.. airi 2018-07-06 7874
286 vba 보고서_엑셀 내보내기 문의 _file첨부 file 열공액세스 2018-06-27 3283
285 거래명세표 양식 작성 문의 2 우진이 2018-06-22 3484
284 폼 제작 및 신규 등록 아이콘 추가 방법 file 1 해지는소리 2018-06-21 6829
283 Powerapps로 전환 관련 1 sayHo 2018-06-10 3721
282 vba 보고서_엑셀 내보내기 문의 file 1 열공액세스 2018-06-04 3880
281 VBA폰트변경시 문제 file 2 아카아키 2018-06-01 14103
» 함수 질문 드립니다 1 김푸센 2018-05-19 6412
279 유료강의 수강관련 1 fkal 2018-05-12 3106
278 폼을 데이터시트 보기로 전환 못해서 질문 드립니다. file 2 대하 2018-05-10 4727
277 로그온 기능 문의(여러사람 동시 사용) 수정 file 2 대하 2018-05-10 2714


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