ApplyFilter 매크로 함수

ApplyFilter 매크로 함수를 사용하면 테이블, 폼 또는 보고서에 필터, 쿼리 또는 SQL WHERE 절을 적용하여 테이블의 레코드나 폼 또는 보고서의 원본으로 사용하는 테이블 또는 쿼리에서 가져온 레코드를 제한하거나 정렬할 수 있습니다. 보고서의 경우 보고서의 OnOpen 이벤트 속성에 지정되어 있는 매크로에만 이 매크로 함수를 사용할 수 있습니다.

참고: 서버 필터를 적용하는 경우에만 이 매크로 함수를 사용하여 SQL WHERE 절을 적용할 수 있습니다. 저장 프로시저의 레코드 원본에는 서버 필터를 적용할 수 없습니다.

참고: Access 웹 앱에서는 ApplyFilter 매크로 함수를 사용할 수 없습니다.

설정

ApplyFilter 매크로 함수의 인수는 다음과 같습니다.

매크로 함수 인수

설명

필터 이름

테이블, 폼 또는 보고서의 레코드를 제한하거나 정렬하는 필터 또는 쿼리의 이름입니다. 기존 쿼리 이름이나 매크로 작성기 창의 매크로 함수 인수 구역에 있는 필터 이름 상자에 쿼리로 저장되어 있는 필터 이름을 입력할 수 있습니다.

참고: 이 매크로 함수를 사용하여 서버 필터를 적용하는 경우 필터 이름 인수는 비워 두어야 합니다.

Where 조건문

테이블, 폼 또는 보고서의 레코드를 제한하는 유효한 SQL WHERE 절(WHERE이라는 단어 없음) 또는 식입니다.

참고: 일반적으로 Where 조건문 인수 식의 왼쪽에는 폼이나 보고서의 원본으로 사용하는 테이블 또는 쿼리에서 가져온 필드 이름이 있고, 식의 오른쪽에는 이 필드에 적용하여 레코드를 제한하거나 정렬하기 위한 조건이 포함됩니다. 예를 들어 특정 폼의 컨트롤 이름을 조건으로 사용하여 다른 폼에서 해당 컨트롤의 값과 일치하는 레코드만 표시할 수 있습니다. 이때 컨트롤의 이름은 다음과 같이 정규화된 이름이어야 합니다.

Forms!formname!controlname

필드 이름은 큰따옴표로 표시하고 문자열 리터럴은 작은따옴표로 표시해야 합니다.

Where 조건문 인수의 최대 길이는 255자 입니다. 255자보다 긴 SQL WHERE 절을 입력해야 하는 경우에는 VBA(Visual Basic for Applications) 모듈에서 DoCmd 개체의 ApplyFilter 메서드를 사용합니다. VBA에서는 SQL WHERE 절 문을 최대 32,768자까지 입력할 수 있습니다.


참고: 적절한 데이터를 제공하는 필터가 이미 정의되어 있는 경우 필터 이름 인수를 사용할 수 있습니다. 또는 Where 조건문 인수를 사용하여 제한 조건을 직접 입력할 수도 있습니다. 두 인수를 모두 사용할 경우 Access에서는 필터링 결과에 WHERE 절을 적용합니다. 두 인수 중 적어도 하나는 반드시 사용해야 합니다.

주의

폼 보기 또는 데이터시트 보기에서 폼에 필터 또는 쿼리를 적용할 수 있습니다.

적용하는 필터 및 WHERE 조건문은 폼 또는 보고서의 Filter 또는 ServerFilter 속성의 설정이 됩니다.

테이블과 폼의 경우 이 매크로 함수의 실행 결과는 레코드 메뉴에서 필터/정렬 적용 또는 서버 필터 적용을 클릭하는 것과 비슷합니다. 그러나 이 메뉴 명령은 테이블이나 폼에 가장 최근에 만든 필터를 적용하는 반면 ApplyFilter 지정된 필터 또는 쿼리를 적용한다는 점이 다릅니다.

ApplyFilter 매크로 함수를 실행한 후에 Access 데이터베이스에서 레코드 메뉴의 필터를 가리킨 다음 고급 필터/정렬을 클릭하면 이 매크로 함수에서 선택한 필터 조건이 고급 필터/정렬 창에 표시됩니다.

필터를 제거하고 Access 데이터베이스의 테이블 또는 폼에 있는 모든 레코드를 표시하려면 ShowAllRecords 매크로 함수를 사용하거나 레코드 메뉴의 필터/정렬 제거 명령을 사용하면 됩니다. Access 프로젝트(.adp)에서 필터를 제거하려면 폼으로 서버 필터 창으로 돌아가 모든 필터 조건을 제거한 다음 도구 모음의 레코드 메뉴에서 서버 필터 적용을 클릭하거나 ServerFilterByForm 속성을 False(0)로 설정합니다.

테이블이나 폼을 저장하면 현재 해당 개체에 정의되어 있는 모든 필터가 저장되지만 다음에 개체를 열 때 자동으로 필터가 적용되지는 않습니다. 그러나 개체를 저장하기 전에 적용한 모든 정렬은 자동으로 적용됩니다. 폼을 처음으로 열 때 필터를 자동으로 적용하려면 ApplyFilter 매크로 함수가 있는 매크로 또는 DoCmd 개체의 ApplyFilter 메서드가 있는 이벤트 프로시저를 폼의 OnOpen 이벤트 속성 설정으로 지정해야 합니다. 또한 OpenForm 또는 OpenReport 매크로 함수를 사용하거나 각 매크로 함수에 해당하는 메서드를 사용하여 필터를 적용할 수도 있습니다. 테이블을 처음으로 열 때 필터를 자동으로 적용하려면 OpenTable 매크로 함수 바로 뒤에 ApplyFilter 매크로 함수가 있는 매크로를 사용하여 테이블을 열면 됩니다.

예제

매크로를 사용하여 필터 적용

다음 매크로에는 고객 전화 번호 목록 폼을 필터링하는 매크로 함수가 여러 개 포함되어 있으며, ApplyFilter, ShowAllRecords, GoToControl 매크로 함수의 사용 방법을 보여 줍니다. 또한 폼의 옵션 그룹에서 어느 전환 단추가 선택되었는지를 확인하는 조건문의 사용 방법도 보여 줍니다. 각 매크로 함수 행은 A, B, C 등 특정 문자로 시작하는 레코드를 선택하거나 모든 레코드를 선택하는 전환 단추에 연결되어 있습니다. 이 매크로는 CompanyNameFilter 옵션 그룹의 AfterUpdate 이벤트에 연결되어야 합니다.

조건

매크로 함수

인수: 설정

설명

[CompanyNameFilters]=1

ApplyFilter

Where 조건문: [CompanyName] Like "[AÀÁÂÃÄ]*"

A, À, Á, Â, Ã 또는 Ä로 시작하는 회사 이름에 대한 필터입니다.

[CompanyNameFilters]=2

ApplyFilter

Where 조건문: [CompanyName] Like "B*"

B로 시작하는 회사 이름에 대한 필터입니다.

[CompanyNameFilters]=3

ApplyFilter

Where 조건문: [CompanyName] Like "[CÇ]*"

C 또는 Ç로 시작하는 회사 이름에 대한 필터입니다.

... D부터 Y까지의 매크로 함수 행은 A부터 C까지의 매크로 함수 행과 형식이 같습니다 ...

[CompanyNameFilters]=26

ApplyFilter

Where 조건문: [CompanyName] Like "[ZÆØÅ]*"

Z, Æ, Ø 또는 Å로 시작하는 회사 이름에 대한 필터입니다.

[CompanyNameFilters]=27

ShowAllRecords

모든 레코드를 표시합니다.

[RecordsetClone].[RecordCount]>0

GoToControl

컨트롤 이름: CompanyName

선택한 문자에 해당하는 레코드가 표시되면 CompanyName 컨트롤로 포커스를 이동합니다.


Office 기술 확장
교육 살펴보기
새로운 기능 우선 가져오기
Office Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×