Unsupported Properties in a Table Object or Table Filter
This topic lists the properties that you cannot add to a Table or use in a Table filter. You cannot add these properties through Columns.Add, and you cannot specify these properties in a filter used by the following methods:
Search.GetTable (Note that the filter is derived from the Search object returned by Application.AdvancedSearch)
Properties |
In Table Object |
In Table Filter |
Comments |
Binary properties |
Supported |
Not supported |
If you add a binary property to a Table referencing its namespace, the value of the property in the Table is in binary. You can use Row.BinaryToString to convert the value to a string. |
Body properties, including Body, HTMLBody, https://schemas.microsoft.com/mapi/proptag/0x10130102 (for PidTagHtml), and https://schemas.microsoft.com/mapi/proptag/0x10090102 (for PidTagRtfCompressed) |
The Body property is supported with a condition that only the first 255 bytes of the value are stored in a Table. Other properties representing the body content in HTML or RTF are not supported. Because only the first 255 bytes of Body is stored in a Table, if you want to obtain the full body content of an item in text or HTML, use the item's EntryID in GetItemFromID to obtain the item object. Then retrieve the full value of Body through the item object. |
Only the Body property represented in text is supported in a filter. This means that the property must be referenced in a DASL filter as urn:schemas:httpmail:textdescription, and you cannot filter on any HTML tags in the body. To improve performance, use context indexer keywords in the filter to match strings in the body. |
|
Computed properties, such as AutoResolvedWinner and BodyFormat. See below for a complete list of computed properties. |
Not supported |
Not supported |
To obtain the value of a computed property for an item in a Table, use the item's EntryID in GetItemFromID to obtain the item object. Then retrieve the property value through the item object. |
Multi-valued properties, such as Categories, Children, Companies, and VotingOptions |
Supported |
Although both Jet and DASL filters both support multi-valued properties, use content indexing in DASL filters for more efficient filtering. For more information, see Filtering Items Using a Comparison with a Keywords Property. |
The format of the values of a multi-valued property in a Table depends on whether the property was added with its explicit built-in name or with a name referencing its namespace. If the property is added with its explicit built-in name, the value in the Table is a comma-delimited string. Otherwise, the value is a variant array. For more information, see How to: Access the Values of a Multi-valued Property in a Table. |
Properties returning an object, such as Attachments, Parent, Recipients, RecurrencePattern, and UserProperties. |
Not supported if property is referenced by its explicit built-in name; supported if property is referenced by its namespace. |
Not supported if property is expressed in a Jet query; supported if property is expressed in a DASL query. |
Unsupported Computed Properties
If you attempt to add one of the computed properties listed below using Columns.Add, referencing the property either by the explicit property name or by namespace, you will get the error, IDS_ERR_BLOCKED_PROPERTY. To determine the value of these properties, obtain the item object using its Entry ID and then use the item object to determine the property value (as in object.property):
AutoResolvedWinner
BodyFormat
Class
ContactNames
Companies
DownloadState
FlagIcon
HtmlBody
InternetCodePage
IsConflict
IsMarkedAsTask
MeetingWorkspaceURL
MemberCount
Saved
Sent
Submitted
TaskSubject
Unread
If you attempt to use one of the computed properties listed below in a Jet filter (referencing the property by its explicit property name) for Table.Restrict, you will get the error, IDS_ERR_ES_INVALIDRESTRICTION:
AutoResolvedWinner
Body
BodyFormat
Class
ContactNames
Companies
ContactNames
ConversationIndex
DownloadState
EntryID
HtmlBody
InternetCodePage
IsConflict
IsMarkedAsTask
MeetingWorkspaceURL
MemberCount
NetMeetingServer
ReplyRecipients
Saved
Sent
Submitted
TaskSubject
Note
For a computed property such as TaskSubject or IsMarkedAsTask, you cannot add it to a Table using Columns.Add or filter it using Table.Restrict, if you reference the property with the explicit property name. However, you can add or filter on the property if you reference it by namespace, as in the following code sample in Visual Basic for Applications:
Sub TableForIsMarkedAsTask()
Dim oT As Outlook.Table
Dim oRow As Outlook.Row
Dim filter As String
'0x0E2B0003 represents IsMarkedAsTask
filter = "@SQL=" & Chr(34) _
& "https://schemas.microsoft.com/mapi/proptag/0x0E2B0003" & Chr(34) & " = 1"
'Table only contains rows for items where IsMarkedAsTask is True
Set oT = Application.Session.GetDefaultFolder(olFolderInbox).GetTable(filter)
oT.Columns.Add ("TaskStartDate")
oT.Columns.Add ("TaskDueDate")
oT.Columns.Add ("TaskCompletedDate")
'Use GUID/ID to represent TaskSubject
oT.Columns.Add ( _
"https://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/85A4001E")
Do Until oT.EndOfTable
Set oRow = oT.GetNextRow
Debug.Print oRow( _
"https://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/85A4001E"), _
oRow("TaskStartDate"), oRow("TaskDueDate"), oRow("TaskCompletedDate")
Loop
End Sub