책 내용 질문하기
온라인 채점 결과 문의
도서
2025 시나공 컴퓨터활용능력 1급 실기 기본서 (ver.2021)
페이지
0
조회수
53
작성일
2026-09-07
작성자
배*웅
첨부파일

2025_최신기출문제_2023년상시02

-2. 이벤트 프로시저 구현 5/5


저는 DoCmd 개체와 ApplyFilter 메소드를 이렇게 작성하였고, 결과 화면에서 매개변수 입력창이 떴습니다. 아무래도 오답인 거 같은데, 왜 정답으로 채점이 되었을까요? 혹시 올바른 결과를 도출할 수 있는 다른 방법인건가요? 답안과의 어떤 차이가 있는지를 중심으로 설명 요청드립니다.


제가 작성한 프로시저 함수식 :

답안 :


답변
2026-09-08 10:29:20

안녕하세요.

두 코드는 겉보기에는 비슷하지만 의미가 다릅니다. 질문자분이 작성한 코드는 다음과 같습니다.

DoCmd.ApplyFilter "select * from 강좌 where 강좌분류=txt분류조회"

반면 답안은 다음과 같습니다.

DoCmd.ApplyFilter , "강좌분류 = '" & txt분류조회 & "'"

가장 큰 차이는 ApplyFilter의 인수 사용 방식입니다. ApplyFilter는 보통

DoCmd.ApplyFilter 필터이름, 조건식

형식으로 사용하는데, 답안에서는 첫 번째 인수인 필터 이름은 생략하고 두 번째 인수인 WhereCondition에 조건식을 넣었습니다.

답안의

"강좌분류 = '" & txt분류조회 & "'"

는 예를 들어 txt분류조회에 컴퓨터가 들어 있다면 최종적으로

강좌분류 = '컴퓨터'

라는 조건식이 만들어집니다. 따라서 현재 폼의 레코드 중 강좌분류가 컴퓨터인 레코드만 필터링됩니다.

반면 질문자분의

"select * from 강좌 where 강좌분류=txt분류조회"

는 ApplyFilter의 첫 번째 인수(FilterName) 위치에 SQL 문장을 넣은 것입니다. Access는 이것을 정상적인 WHERE 조건으로 처리하는 것이 아니라, 저장된 필터/쿼리 이름처럼 해석하려고 할 수 있습니다. 또한 SQL 안의 txt분류조회도 명확하게 현재 폼의 컨트롤 값으로 연결되어 있지 않기 때문에, Access가 이를 알 수 없는 이름으로 판단하여 매개 변수 입력창을 띄우는 현상이 발생할 수 있습니다.

따라서 질문자분이 실제 실행했을 때 매개 변수 창이 떴다면 기능적으로 올바른 해결 방법이라고 볼 수 없습니다.

그런데도 5/5로 채점된 이유는 채점 프로그램이 이벤트 프로시저를 완전히 실행해서 결과까지 검증한 것이 아니라, 코드 안에

DoCmd
ApplyFilter

같은 요구 요소가 들어 있는지 또는 해당 이벤트 프로시저가 존재하는지 중심으로 검사했을 가능성이 높습니다. 즉 자동채점에서 정답 처리됐다고 해서 실행 결과까지 올바르다는 뜻은 아닙니다.

특히 이번 경우는 실제 실행 결과가 명확한 판단 기준입니다.

질문자 코드
→ 매개 변수 입력창 발생
→ 정상적인 필터 결과 아님

답안 코드
→ txt분류조회 값을 문자열 조건으로 만들어 필터 적용
→ 정상

그리고 텍스트 필드이기 때문에 답안에서 작은따옴표 '가 들어간 것도 중요합니다.

"강좌분류 = '" & txt분류조회 & "'"

예를 들어 값이 일반이면

강좌분류 = '일반'

이 만들어져야 하기 때문입니다.

결론적으로 이번 5/5는 채점 프로그램이 코드의 핵심 명령어 위주로 판정해서 통과한 것으로 보는 것이 타당하며, 질문자 코드가 답안과 동일한 다른 해법인 것은 아닙니다. 실제 시험 대비에서는 답안처럼 ApplyFilter의 두 번째 인수에 조건식을 작성하는 방식으로 익히시는 것이 맞습니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-08 10:29:20

    안녕하세요.

    두 코드는 겉보기에는 비슷하지만 의미가 다릅니다. 질문자분이 작성한 코드는 다음과 같습니다.

    DoCmd.ApplyFilter "select * from 강좌 where 강좌분류=txt분류조회"

    반면 답안은 다음과 같습니다.

    DoCmd.ApplyFilter , "강좌분류 = '" & txt분류조회 & "'"

    가장 큰 차이는 ApplyFilter의 인수 사용 방식입니다. ApplyFilter는 보통

    DoCmd.ApplyFilter 필터이름, 조건식

    형식으로 사용하는데, 답안에서는 첫 번째 인수인 필터 이름은 생략하고 두 번째 인수인 WhereCondition에 조건식을 넣었습니다.

    답안의

    "강좌분류 = '" & txt분류조회 & "'"

    는 예를 들어 txt분류조회에 컴퓨터가 들어 있다면 최종적으로

    강좌분류 = '컴퓨터'

    라는 조건식이 만들어집니다. 따라서 현재 폼의 레코드 중 강좌분류가 컴퓨터인 레코드만 필터링됩니다.

    반면 질문자분의

    "select * from 강좌 where 강좌분류=txt분류조회"

    는 ApplyFilter의 첫 번째 인수(FilterName) 위치에 SQL 문장을 넣은 것입니다. Access는 이것을 정상적인 WHERE 조건으로 처리하는 것이 아니라, 저장된 필터/쿼리 이름처럼 해석하려고 할 수 있습니다. 또한 SQL 안의 txt분류조회도 명확하게 현재 폼의 컨트롤 값으로 연결되어 있지 않기 때문에, Access가 이를 알 수 없는 이름으로 판단하여 매개 변수 입력창을 띄우는 현상이 발생할 수 있습니다.

    따라서 질문자분이 실제 실행했을 때 매개 변수 창이 떴다면 기능적으로 올바른 해결 방법이라고 볼 수 없습니다.

    그런데도 5/5로 채점된 이유는 채점 프로그램이 이벤트 프로시저를 완전히 실행해서 결과까지 검증한 것이 아니라, 코드 안에

    DoCmd
    ApplyFilter

    같은 요구 요소가 들어 있는지 또는 해당 이벤트 프로시저가 존재하는지 중심으로 검사했을 가능성이 높습니다. 즉 자동채점에서 정답 처리됐다고 해서 실행 결과까지 올바르다는 뜻은 아닙니다.

    특히 이번 경우는 실제 실행 결과가 명확한 판단 기준입니다.

    질문자 코드
    → 매개 변수 입력창 발생
    → 정상적인 필터 결과 아님
    
    답안 코드
    → txt분류조회 값을 문자열 조건으로 만들어 필터 적용
    → 정상

    그리고 텍스트 필드이기 때문에 답안에서 작은따옴표 '가 들어간 것도 중요합니다.

    "강좌분류 = '" & txt분류조회 & "'"

    예를 들어 값이 일반이면

    강좌분류 = '일반'

    이 만들어져야 하기 때문입니다.

    결론적으로 이번 5/5는 채점 프로그램이 코드의 핵심 명령어 위주로 판정해서 통과한 것으로 보는 것이 타당하며, 질문자 코드가 답안과 동일한 다른 해법인 것은 아닙니다. 실제 시험 대비에서는 답안처럼 ApplyFilter의 두 번째 인수에 조건식을 작성하는 방식으로 익히시는 것이 맞습니다.

    즐거운 하루 되세요.

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