에너지 관점 스터디:에관스

컴활 1급 · Access 프로시저

Filter·FilterOn·OrderBy·OrderByOn은 조건·순서를 쓰고 각각 켜는 구조입니다

두음 암기는 `필조·필켜·오순·오켜`입니다. Filter에는 필터 조건을 쓰고 FilterOn으로 켜며, OrderBy에는 정렬 순서를 쓰고 OrderByOn으로 켭니다.

재미 문장은 `필터 조건 쓰고 필터 켜, 오더 순서 쓰고 오더 켜`입니다. 속성 네 개가 나오면 값 저장 속성과 적용 스위치를 두 쌍으로 갈라 보세요.

결론부터 말하면 `Filter`는 WHERE를 뺀 조건 문자열, `FilterOn`은 그 조건의 적용 여부, `OrderBy`는 필드와 ASC·DESC를 적은 정렬 문자열, `OrderByOn`은 그 정렬의 적용 여부입니다. Microsoft Learn도 조건과 정렬 기준을 먼저 지정한 뒤 각각의 On 속성을 True로 설정해 적용하도록 안내합니다.

컴활 1급 Access Filter FilterOn OrderBy OrderByOn을 조건 순서 적용 스위치로 비교한 인포그래픽
Filter와 OrderBy에 조건·순서를 적고 FilterOn과 OrderByOn을 True로 설정해 각각 적용합니다.
작성에관스 컴활 1급 학습팀 발행2026년 8월 8일 수정2026년 8월 8일 주제Access 프로시저

핵심 포인트

이 글에서 먼저 챙길 것

  • Filter에는 SQL WHERE 절과 같은 조건을 쓰되 WHERE라는 단어는 넣지 않습니다.
  • FilterOn이 True여야 저장된 Filter가 실제 레코드에 적용됩니다.
  • OrderBy에는 필드 이름을 쉼표로 나열하고 기본 오름차순 또는 DESC 내림차순을 지정합니다.
  • OrderByOn이 True여야 저장된 OrderBy가 화면 정렬에 적용됩니다.
  • FilterOn·OrderByOn을 False로 바꿔도 조건·정렬 문자열 자체를 지우는 것과는 다릅니다.

본문

컴활 1급 공부 기준을 더 구체적으로 보기

이 글이 필요한 사람

컴활 1급 데이터베이스 실기에서 `Me.Filter = ...`까지만 쓰고 결과가 바뀌지 않거나, Filter와 WhereCondition을 같은 자리에 넣다가 틀리는 사람에게 맞는 글입니다.

기존 `DoCmd.OpenForm·WhereCondition` 글은 폼을 여는 명령과 열 때 전달하는 일회성 조건을 맡습니다. 이 글은 이미 열린 폼의 Filter·OrderBy 속성과 두 On 스위치만 전담합니다.

검색어로는 컴활 FilterOn, Access OrderByOn, 폼 필터 코드처럼 속성 이름을 직접 찾는 경우가 많습니다. 네 속성을 두 쌍으로 묶으면 코드 순서까지 동시에 정리됩니다.

두음 암기부터 잡으세요: 필조·필켜·오순·오켜

`필조`는 Filter에 조건을 적는다는 뜻이고 `필켜`는 FilterOn으로 조건을 켠다는 뜻입니다. `오순`은 OrderBy에 정렬 순서를 적는다는 뜻이고 `오켜`는 OrderByOn으로 정렬을 켠다는 뜻입니다.

조건과 순서는 문자열 속성이고, 켜기는 Boolean 속성입니다. 따라서 Filter·OrderBy에는 조건식과 필드명이 들어가고 FilterOn·OrderByOn에는 True 또는 False가 들어갑니다.

시험 직전에는 `내용 먼저, 스위치 나중`이라고 한 번 더 번역하세요. 내용을 적지 않고 On만 켜거나, 내용만 적고 On을 켜지 않는 실수를 함께 막을 수 있습니다.

네 속성을 조건 쌍과 정렬 쌍으로 나누세요

필터 쌍은 `Filter + FilterOn`입니다. Filter가 어떤 레코드만 남길지를 저장하고 FilterOn이 그 저장된 조건을 현재 폼에 실제 적용할지 정합니다.

정렬 쌍은 `OrderBy + OrderByOn`입니다. OrderBy가 어느 필드부터 어떤 방향으로 정렬할지를 저장하고 OrderByOn이 그 정렬을 실제 적용할지 정합니다.

문제 지시문에 `조건에 맞는 레코드만 표시`가 보이면 필터 쌍, `내림차순으로 정렬`이 보이면 정렬 쌍을 먼저 고릅니다. 그 뒤 문자열 설정과 True 적용이 모두 있는지 확인합니다.

Filter는 WHERE를 뺀 조건 문자열입니다

Microsoft Learn은 Filter 속성을 SQL 문의 WHERE 절과 같은 문자열로 설명하되 WHERE라는 단어는 제외한다고 안내합니다. 예를 들어 서울 레코드만 남기려면 `Me.Filter = "[지역] = '서울'"`처럼 씁니다.

숫자 조건은 `Me.Filter = "[점수] >= 70"`, 날짜 조건은 Access 기준에 맞춰 `Me.Filter = "[접수일] >= #2026-08-01#"`처럼 최종 조건 문자열의 형식을 구분합니다.

Filter에는 조건의 내용만 저장됩니다. 이 한 줄을 실행했다고 해서 언제나 화면이 바로 필터링된다고 외우지 말고, 다음 줄의 FilterOn=True까지 한 세트로 확인하세요.

FilterOn은 저장된 필터를 켜고 끕니다

`Me.FilterOn = True`는 Filter 속성에 저장된 조건을 현재 폼에 적용합니다. Microsoft Learn의 예제도 Filter 문자열을 지정한 뒤 FilterOn을 True로 바꾸는 순서를 사용합니다.

`Me.FilterOn = False`는 현재 필터 적용을 해제합니다. 중요한 점은 False가 Filter 문자열을 빈 문자열로 지우는 명령과 같지 않다는 것입니다. 조건은 남아 있고 적용 상태만 꺼질 수 있습니다.

따라서 문제에서 `필터 해제`만 요구하면 FilterOn=False를 먼저 떠올리고, 조건 자체를 초기화하라고 명시했을 때만 Filter 값까지 별도로 다루는지 확인합니다.

OrderBy는 필드명과 ASC·DESC를 적는 문자열입니다

OrderBy 속성에는 정렬할 필드 이름을 적습니다. Microsoft Learn 기준으로 방향을 생략하면 기본은 오름차순이며 내림차순은 필드명 뒤에 DESC를 붙입니다.

접수일을 최신순으로 보려면 `Me.OrderBy = "[접수일] DESC"`라고 쓸 수 있습니다. 같은 날짜 안에서 고객명을 오름차순으로 정렬하려면 `Me.OrderBy = "[접수일] DESC, [고객명] ASC"`처럼 쉼표로 기준을 이어 씁니다.

문제에 정렬 기준이 둘 이상이면 앞에 적힌 필드가 1차 기준입니다. ASC·DESC를 각 필드에 붙였는지, 지시문의 우선순서와 코드 순서가 같은지 확인하세요.

OrderByOn은 저장된 정렬을 실제로 적용합니다

OrderBy 문자열을 지정한 뒤 `Me.OrderByOn = True`로 바꾸면 현재 폼에 정렬이 적용됩니다. OrderBy가 정렬 설계도라면 OrderByOn은 실행 스위치입니다.

`Me.OrderByOn = False`는 정렬 적용을 끕니다. FilterOn과 마찬가지로 저장된 OrderBy 문자열을 지우는 동작과는 구분해야 합니다.

Microsoft Learn은 Filter·OrderBy 속성의 적용이나 변경으로 필터·정렬을 바꾸면 폼의 레코드가 자동으로 다시 조회된다고 설명합니다. 단순히 화면 글자만 재배치하는 별도 표시 옵션으로 오해하지 마세요.

프로시저 코드는 문자열 다음 True 순서로 쓰세요

버튼 클릭 프로시저에서 필터를 적용하는 기본형은 `Me.Filter = "[지역] = '서울'"` 다음 줄에 `Me.FilterOn = True`입니다. 정렬은 `Me.OrderBy = "[접수일] DESC"` 다음 줄에 `Me.OrderByOn = True`를 둡니다.

필터와 정렬을 함께 요구하면 필터 쌍과 정렬 쌍을 각각 완성합니다. 네 줄의 순서를 통째로 외우기보다 `조건-켜기`, `순서-켜기` 두 묶음으로 검토하는 편이 누락을 줄입니다.

컨트롤 값을 조건에 연결할 때는 최종 Filter 문자열이 실제로 어떻게 만들어지는지 읽어야 합니다. 문자값의 작은따옴표, 날짜값의 #, 숫자값의 무구분 원칙은 기존 Access 조건식 글과 같은 기준입니다.

WhereCondition과 Filter의 역할 범위를 섞지 마세요

`DoCmd.OpenForm`의 WhereCondition은 폼을 여는 명령의 인수입니다. 반면 `Me.Filter`와 `Me.FilterOn`은 현재 폼의 속성을 설정하고 적용하는 코드입니다.

문제에 `폼을 열되 조건에 맞는 레코드만`이 나오면 OpenForm과 WhereCondition 구조를 먼저 검토합니다. `현재 폼에서 조건을 바꾸어 표시`가 나오면 Filter와 FilterOn 쌍을 먼저 검토합니다.

둘 다 결과적으로 레코드를 좁힐 수 있지만 시험에서 요구하는 개체와 코드 자리가 다릅니다. 열기 명령의 인수인지, 열린 폼의 속성인지부터 나누면 중복 암기 없이 선택할 수 있습니다.

FilterOnLoad·OrderByOnLoad와 시험 직전 6줄을 확인하세요

FilterOnLoad와 OrderByOnLoad는 저장된 필터와 정렬을 폼을 불러올 때 적용할지 정하는 속성입니다. 현재 코드에서 즉시 켜는 FilterOn·OrderByOn과 이름이 비슷하므로 `Load가 붙으면 열릴 때`라고 구분합니다.

시험 직전 6줄은 이렇습니다. 첫째 Filter=조건, 둘째 FilterOn=적용, 셋째 OrderBy=순서, 넷째 OrderByOn=적용, 다섯째 Filter에는 WHERE를 쓰지 않음, 여섯째 OrderBy의 기본은 ASC이고 내림차순은 DESC입니다.

마지막으로 `필조·필켜·오순·오켜`를 소리 내어 말한 뒤 코드에서 문자열 두 개와 True 두 개가 대응하는지 보세요. 속성 이름만 비슷한 문제를 가장 짧게 제거하는 검산법입니다.

FAQ

자주 묻는 질문

Filter와 FilterOn의 차이는 무엇인가요?

Filter는 WHERE를 뺀 필터 조건 문자열을 저장하고, FilterOn은 그 저장된 조건을 현재 폼에 적용할지 True·False로 정합니다.

OrderBy에 DESC를 쓰지 않으면 어떻게 정렬되나요?

Microsoft Learn 기준으로 정렬 방향을 생략하면 기본은 오름차순입니다. 내림차순이 필요할 때 필드명 뒤에 DESC를 붙입니다.

FilterOn=False이면 Filter 조건도 삭제되나요?

아닙니다. FilterOn=False는 필터 적용을 끄는 것이며 Filter 속성에 저장된 조건 문자열을 빈 값으로 지우는 것과는 다릅니다.

WhereCondition과 Filter는 언제 구분해서 쓰나요?

WhereCondition은 보통 DoCmd.OpenForm으로 폼을 열 때 전달하는 조건 인수이고, Filter와 FilterOn은 현재 열린 폼의 필터 속성과 적용 상태를 다룰 때 사용합니다.