Filtering Items

This topic describes the general rules for specifying properties in filters that are supported by various objects in Outlook. For more information about specifying conditions on properties to complete a filter, see the topics in the Filter Syntax section.

A filter is a condition or a set of conditions that you can apply to a set of items to obtain a subset of items that meets the specified conditions. Outlook supports filters by using the Microsoft Jet query language syntax or the DAV Searching and Locating (DASL) syntax. Note that the Jet query language syntax has the same syntax as that supported by Microsoft Jet Expression Service, hence the name Jet query language.

As an example, you can filter contact items in your Contacts folder to obtain a list of contacts residing in Canada. In this case, you'll be filtering on the HomeAddressCountry property. The filter, expressed as a Jet filter, will be "[HomeAddressCountry] = 'Canada'".

Outlook provides filtering through the following entry points:

Entry point Jet filter support DASL filter support
Application.AdvancedSearch No Yes
Folder.GetTable Yes Yes
Items.Find Yes Yes. Note that if you use the query keywords ci_phrasematch or ci_startswith in the filter, you'll get an error.
Items.Restrict Yes Yes
Search.GetTable No Yes
Table.FindRow Yes Yes. Note that if you use the query keywords ci_phrasematch or ci_startswith in the filter, you'll get an error.
Table.Restrict Yes Yes
View.Filter No Yes

Note

A filter must contain a query in either Jet or DASL syntax but not a mixture of both.

Property specifiers

When specifying properties in a Jet filter or DASL filter using any of the above entry points, follow these guidelines.

Jet filter DASL filter
Applicable properties Most explicit built-in and custom item-level properties; see corresponding method topic for unsupported properties. Most built-in and custom item-level properties with and without explicit string names; see corresponding method topic for unsupported properties.
Referencing properties
  • By their explicit string names.

  • Explicit built-in properties can only be referenced by their names in English and not any other localized language.

  • Custom properties can be referenced by their names in English or a localized language.

By their namespaces.
Format of reference
  • Enclose square brackets ('['']') around explicit string names.

  • Property names are not case-sensitive.

  • Spaces are not allowed in explicit built-in properties.

  • Spaces are allowed in custom properties.

  • All DASL queries begin with a case-sensitive prefix "@SQL=", with the exception of DASL queries for Application.AdvancedSearch.

  • Property referenced by namespace must be enclosed in double quotes.

  • Property referenced by namespace is case-sensitive.

  • If a space exists in the name of a custom property, the space must be replaced by "%20". In general, URL encoding applies the same way to characters in a DASL query as in a URL.

Error conditions Returns an error if a custom property in the filter is not defined, or the filter is empty, has an invalid argument, or cannot be parsed. Returns an error if a custom property in the filter is not defined, or the filter is empty, has an invalid argument, or cannot be parsed.

Filter syntax

The syntax of a filter depends on the type of the property you are filtering on. The following topics provide further information about how to construct a filter based on a specific property type:

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.