다음 중 아래 그림과 같이 ‘성명’필드가 ‘txt검색’ 컨트롤에 입력된… | [컴퓨터활용능력 1급 필기] 15년 1회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 15년 1회차
다음 중 아래 그림과 같이 ‘성명’필드가 ‘txt검색’ 컨트롤에 입력된 문자를 포함하는 레코드만을 표시하도록 하는 프로시저의 코드로 옳은 것은?(원본 그림이 너무 커서 문제 풀기에 필요한 부분만 잘라내었습니다. 참고하세요.)
1
Me.Filter = "성명 = '*" & txt검색 & "*'"
Me.FilterOn = True
2
Me.Filter = "성명 = '*" & txt검색 & "*'"
Me.FilterOn = False
3
Me.Filter = "성명 like '*" & txt검색 & "*'"
Me.FilterOn = True
4
Me.Filter = "성명 like '*" & txt검색 & "*'"
Me.FilterOn = False
해설
화면에서 '회원 성명' 입력란(txt검색)에 '조' 한 글자만 넣고 검색했는데 성명이 '조장재' 인 레코드가 표시되었다. 즉 입력한 문자가 성명의 일부로 포함되기만 하면 걸러지도록 해야 하므로, 같음(=)이 아니라 Like 연산자와 만능 문자(*) 를 함께 써야 한다. "성명 = '*조*'" 처럼 등호를 쓰면 별표가 특수 문자로 해석되지 않고 글자 그대로 비교되어 아무 레코드도 나오지 않는다.
따라서 필터 문자열은 Me.Filter = "성명 like '*" & txt검색 & "*'" 형태가 되어야 한다. 컨트롤 값을 문자열 사이에 연결(&)해 넣으면 '조'가 들어갔을 때 성명 like '*조*' 라는 조건이 완성된다.
또 하나 놓치기 쉬운 점은, Filter 속성에 조건을 넣기만 해서는 화면이 바뀌지 않는다는 것이다. 그 필터를 실제로 적용하려면 Me.FilterOn = True 를 함께 지정해야 하며, False 로 두면 조건이 저장만 될 뿐 해제 상태여서 모든 레코드가 그대로 표시된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
