드로우홀릭 더베이직

함수 질문 드립니다

2018.05.19 10:18:02 조회 수 6875 추천 수 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 31983
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 28129
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23156
» 함수 질문 드립니다 1 김푸센 2018-05-19 6875
279 유료강의 수강관련 1 fkal 2018-05-12 3143
278 폼을 데이터시트 보기로 전환 못해서 질문 드립니다. file 2 대하 2018-05-10 4916
277 로그온 기능 문의(여러사람 동시 사용) 수정 file 2 대하 2018-05-10 2715
276 이벤트 프레시저 1 머피 2018-05-10 2541
275 테이블 정규화 및 관계에 대해 문의드립니다. 2 액세스새내기 2018-04-30 2402
274 office 2016사용하면서 ADP사용할 수 있는 방법이 있는지요 2 jayone 2018-04-26 2386
273 액세스 프로그램을 회사 서버에 탑재할수 있는 방법에 대한 문의? 1 엑세스00 2018-04-15 4898
272 긴 텍스트와 데이터 락 관련 문의 드립니다. file Ssari 2018-04-09 2186
271 긴 텍스트 관련 문의 드립니다. file 1 Ssari 2018-04-06 11213
270 "데이터베이스 설계" 온라인 과정 개설 문의 1 스테파노 2018-03-23 7383
269 데이터베이스 이론 교재 추천해 주세요. 2 스테파노 2018-03-23 2955
268 시간 데이터형식 표시가 잘 되지 않아 질문드립니다. 4 아카아키 2018-03-16 8227
267 정확히 일치하지 않은 데이터 연결하기 쿠웨이트azrp 2018-03-11 1607
266 유료온라인 수강신청 문의 1 김수연 2018-03-02 5390
265 TFaccess 설치에 감사드립니다. 스테파노 2018-03-02 1844
264 두 테이블 조인 후 합계 산출 관련 문의 件 1 세랖 2018-02-22 4105
263 ID와 암호기반의 로그인 기능 필요 件 세랖 2018-02-19 1563
262 사업자등록번호 구분 관련 입니다. 1 팩구 2018-02-13 4851
261 엑세스 콤보상자 속성 설정 문의 file 핫팅 2018-02-08 2274


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