ApplyFilter 매크로 함수를 사용하면 테이블, 폼 또는 보고서에 필터, 쿼리 또는 SQL WHERE 절을 적용하여 테이블의 레코드나 폼 또는 보고서의 원본으로 사용하는 테이블 또는 쿼리에서 가져온 레코드를 제한하거나 정렬할 수 있습니다. 보고서의 경우 보고서의 OnOpen 이벤트 속성에 지정되어 있는 매크로에만 이 매크로 함수를 사용할 수 있습니다.
참고: 서버 필터를 적용하는 경우에만 이 매크로 함수를 사용하여 SQL WHERE 절을 적용할 수 있습니다. 저장 프로시저의 레코드 원본에는 서버 필터를 적용할 수 없습니다.
참고: Access 웹 앱에서는 ApplyFilter 매크로 함수를 사용할 수 없습니다.
설정
ApplyFilter 매크로 함수의 인수는 다음과 같습니다.
매크로 함수 인수 |
설명 |
필터 이름 |
테이블, 폼 또는 보고서의 레코드를 제한하거나 정렬하는 필터 또는 쿼리의 이름입니다. 기존 쿼리 이름이나 매크로 작성기 창의 매크로 함수 인수 구역에 있는 필터 이름 상자에 쿼리로 저장되어 있는 필터 이름을 입력할 수 있습니다. 참고: 이 매크로 함수를 사용하여 서버 필터를 적용하는 경우 필터 이름 인수는 비워 두어야 합니다. |
Where 조건문 |
테이블, 폼 또는 보고서의 레코드를 제한하는 유효한 SQL WHERE 절(WHERE이라는 단어 없음) 또는 식입니다. 참고: Where Condition 인수 식에서 식의 왼쪽에는 일반적으로 기본 테이블의 필드 이름 또는 폼 또는 보고서에 대한 쿼리가 포함됩니다. 식의 오른쪽에는 일반적으로 레코드를 제한하거나 정렬하기 위해 이 필드에 적용하려는 조건 포함됩니다. 예를 들어 조건은 첫 번째 폼의 레코드가 일치시킬 값을 포함하는 다른 폼의 컨트롤 이름일 수 있습니다. 컨트롤의 이름은 정규화되어야 합니다. 예를 들면 다음과 같습니다. 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)로 설정합니다.
테이블이나 폼을 저장할 때 Access는 해당 개체에 현재 정의된 필터를 저장하지만 다음에 개체를 열 때 필터를 자동으로 적용하지 않습니다(개체를 저장하기 전에 적용한 모든 정렬이 자동으로 적용됨). 폼을 처음 열 때 필터를 자동으로 적용하려면 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 컨트롤로 포커스를 이동합니다. |