책 내용 질문하기
26년 상시 01 액세스 답지오류?
도서
2027 시나공 컴퓨터활용능력 1급 실기 기본서
페이지
220
조회수
100
작성일
2026-09-08
작성자
김*현
첨부파일

문제4 처리기능구현에서 1번 문제 업데이트 쿼리에서 답지에는


IIf([최소자본금] Is Not Null And [자본금]<[최소자본금],"업데이트 필요","")


이렇게 입력하라고 나와있어서 입력했더니 비고 필드 50개 행이 전부 업데이트 된다고 나옵니다.


iif 없이 풀었을때는 아래 사진처럼 잘 나오구요


확인 부탁드립니다





※ iif를 강제하고 있는 상황이니 아래 처럼 풀었더니 잘 나오는듯 합니다


답변
2026-09-09 10:03:07

안녕하세요.

네, 질문하신 현상은 Access 업데이트 쿼리의 동작 방식 때문에 정상적으로 발생할 수 있습니다. 핵심은 IIf를 업데이트 값에만 사용하면 레코드를 걸러내는 것이 아니라, 모든 레코드에 대해 값을 계산한다는 점입니다.

답지의 식이

IIf([최소자본금] Is Not Null And [자본금]<[최소자본금],
    "업데이트 필요",
    "")

이고 이것을 비고 필드의 업데이트 행에 넣으면, Access는 50개 레코드 모두에 대해 이 식을 평가합니다.

조건을 만족하는 13개는

비고 = "업데이트 필요"

로 바꾸고, 조건을 만족하지 않는 나머지 37개도 그냥 건너뛰는 것이 아니라

비고 = ""

로 업데이트합니다.

따라서 Access 입장에서는 50개 레코드 모두가 UPDATE문의 대상이므로

50행을 새로 고칩니다.

라고 표시되는 것이 맞습니다.

반면 두 번째 화면처럼

비고          업데이트: "업데이트 필요"
최소자본금    조건: Is Not Null
자본금        조건: <[최소자본금]

으로 작성하면 WHERE 조건에 의해 처음부터 13개 레코드만 업데이트 대상이 됩니다. 그래서

13행을 새로 고칩니다.

가 나옵니다.

즉 두 방식의 차이는 다음과 같습니다.

IIf만 사용
→ 50행 모두 UPDATE
→ 13행은 "업데이트 필요"
→ 나머지 37행은 ""

WHERE 조건 사용
→ 조건을 만족하는 13행만 UPDATE
→ 나머지 37행은 아예 건드리지 않음

따라서 문제의 의도가 “조건을 만족하는 레코드의 비고만 ‘업데이트 필요’로 변경”하는 것이라면, 두 번째 방식처럼 WHERE 조건으로 대상을 제한하는 것이 더 정확한 처리입니다.

만약 문제에서 반드시 IIf 함수를 사용하라고 지정했다면, 가장 안전한 방법은 IIf와 조건을 함께 사용하는 것입니다. 예를 들면 비고의 업데이트 행에는

IIf([최소자본금] Is Not Null And [자본금]<[최소자본금],
    "업데이트 필요",
    "")

를 사용하되, 별도의 조건용 필드에서

[최소자본금] Is Not Null

및

[자본금] < [최소자본금]

조건까지 적용하여 업데이트 대상 자체를 13행으로 제한하는 방식입니다.

다만 이렇게 하면 WHERE에서 이미 조건을 걸었으므로 IIf의 거짓 부분 ""은 실제로 사용될 일이 없습니다. 그래서 출제 의도가 정말로 IIf 사용까지 강제하면서 동시에 “13행 업데이트”를 요구한다면, 답지의 IIf만 있는 형태는 논리적으로 다소 부자연스럽습니다.

따라서 현재 확인하신 것처럼 IIf만 쓰면 50행, 조건으로 대상을 제한하면 13행이 나오는 것이 Access의 정상 동작입니다. 교재에서 실행 메시지까지 13행이라고 제시하면서 답안을 IIf만 사용하도록 했다면 그 부분은 작성한 파일 검토가 필요합니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-09 10:03:07

    안녕하세요.

    네, 질문하신 현상은 Access 업데이트 쿼리의 동작 방식 때문에 정상적으로 발생할 수 있습니다. 핵심은 IIf를 업데이트 값에만 사용하면 레코드를 걸러내는 것이 아니라, 모든 레코드에 대해 값을 계산한다는 점입니다.

    답지의 식이

    IIf([최소자본금] Is Not Null And [자본금]<[최소자본금],
        "업데이트 필요",
        "")

    이고 이것을 비고 필드의 업데이트 행에 넣으면, Access는 50개 레코드 모두에 대해 이 식을 평가합니다.

    조건을 만족하는 13개는

    비고 = "업데이트 필요"

    로 바꾸고, 조건을 만족하지 않는 나머지 37개도 그냥 건너뛰는 것이 아니라

    비고 = ""

    로 업데이트합니다.

    따라서 Access 입장에서는 50개 레코드 모두가 UPDATE문의 대상이므로

    50행을 새로 고칩니다.

    라고 표시되는 것이 맞습니다.

    반면 두 번째 화면처럼

    비고          업데이트: "업데이트 필요"
    최소자본금    조건: Is Not Null
    자본금        조건: <[최소자본금]

    으로 작성하면 WHERE 조건에 의해 처음부터 13개 레코드만 업데이트 대상이 됩니다. 그래서

    13행을 새로 고칩니다.

    가 나옵니다.

    즉 두 방식의 차이는 다음과 같습니다.

    IIf만 사용
    → 50행 모두 UPDATE
    → 13행은 "업데이트 필요"
    → 나머지 37행은 ""
    
    WHERE 조건 사용
    → 조건을 만족하는 13행만 UPDATE
    → 나머지 37행은 아예 건드리지 않음

    따라서 문제의 의도가 “조건을 만족하는 레코드의 비고만 ‘업데이트 필요’로 변경”하는 것이라면, 두 번째 방식처럼 WHERE 조건으로 대상을 제한하는 것이 더 정확한 처리입니다.

    만약 문제에서 반드시 IIf 함수를 사용하라고 지정했다면, 가장 안전한 방법은 IIf와 조건을 함께 사용하는 것입니다. 예를 들면 비고의 업데이트 행에는

    IIf([최소자본금] Is Not Null And [자본금]<[최소자본금],
        "업데이트 필요",
        "")

    를 사용하되, 별도의 조건용 필드에서

    [최소자본금] Is Not Null

    및

    [자본금] < [최소자본금]

    조건까지 적용하여 업데이트 대상 자체를 13행으로 제한하는 방식입니다.

    다만 이렇게 하면 WHERE에서 이미 조건을 걸었으므로 IIf의 거짓 부분 ""은 실제로 사용될 일이 없습니다. 그래서 출제 의도가 정말로 IIf 사용까지 강제하면서 동시에 “13행 업데이트”를 요구한다면, 답지의 IIf만 있는 형태는 논리적으로 다소 부자연스럽습니다.

    따라서 현재 확인하신 것처럼 IIf만 쓰면 50행, 조건으로 대상을 제한하면 13행이 나오는 것이 Access의 정상 동작입니다. 교재에서 실행 메시지까지 13행이라고 제시하면서 답안을 IIf만 사용하도록 했다면 그 부분은 작성한 파일 검토가 필요합니다.

    즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.