| 
			 
			 
    	    
		 | 
			
	RDOFolders object collection |   
  
RDOFolders collection represents the 
subfolders of a given RDOFolder object. 
Returned by: 
RDOFolder.Folders 
  
The example below logs to the default 
MAPI session and prints out the names of all the subfolders of the root IPM 
folder of the default store: 
  
    | 
	 set Session = 
	CreateObject("Redemption.RDOSession") 
	Session.Logon 
	set IPMRoot = Session.Stores.DefaultStore.IPMRootFolder 
	for each Folder in IPMRoot.Folders 
  Debug.Print(Folder.Name) 
	next  | 
   
 
  
Properties 
Methods 
Events 
  
	
		
  | 
	 
	
		
		Derived from: 
		IDispatch
		 | 
	 
	
		
		
  | 
	 
	
		
		Properties | 
	 
	
		
		
  | 
	 
	
		| 
		 Count  | 
		
		 integer. Returns the number 
		of folders in the collection  | 
		
		 set Session = 
	CreateObject("Redemption.RDOSession") 
	Session.Logon 
	set Folder = Session.Stores.DefaultStore.IPMRootFolder.Folders("Test 
	folder") 
	MsgBox "Number of subfolders: " & Folder.Folders.Count  | 
	 
	
		| 
		 _Item(Index)  | 
		
		 Index - variant: 
		integer or a string. A default object property. 
		Retrieves a subfolder with a 
		given index (1 to Count) or a given name 
		Returns
		RDOFolder object  | 
		
		 | 
	 
	
		| 
		 
		RawTable  | 
		
		 IUnknown, read-only. Returns the IMAPITable Extended MAPI interface used 
		internally by the RDOItems collection  | 
		
  | 
	 
	
		| 
		 
		Session  | 
		
		 
		RDOSession, read-only. Returns the parent 
		MAPI session represented by the RDOSession object  | 
		
  | 
	 
	
		| 
		 
		MAPITable  | 
		
		 
		MAPITable, read-only. Returns the 
		MAPITable Redemption object which can be used to manipulate the 
		collection (restrict, find, etc).  | 
		
  | 
	 
	
		
  | 
	 
	
		
		Methods | 
	 
	
		
		
  | 
	 
	
		| 
		 Item(Index)  | 
		
		 Index - variant: 
		integer or a string. 
		Retrieves a subfolder with a 
		given index (1 to Count) or a given name 
		Returns
		RDOFolder object 
		   | 
		
		    | 
	 
	
		| 
		 Add(Name, Type)  | 
		
		 Adds new subfolder to the 
		specified folder. Returns an RDOFolder 
		object. 
		  
		Name - string. The 
		name of the folder to add 
		Type - variant, 
		optional. If specified, can be either one of the 
		rdoDefaultFolders enums 
		(olFolderCalendar, olFolderContacts, etc) or a string representing the 
		container class (PR_CONTAINER_CLASS in Extended MAPI), e.g. "IPF.Contact" 
		   | 
		
		 set Session = 
		CreateObject("Redemption.RDOSession") 
		Session.Logon 
		set IPMRoot = Session.Stores.DefaultStore.IPMRootFolder 
		set NewFld = IPMRoot.Folders.Add("Test Folder")  | 
	 
	
		| 
		 
		AddSearchFolder(Name, Type)  | 
		
		 Adds new search folder to the 
		specified folder. Returns an 
		RDOSearchFolder object. 
		Name - string. The 
		name of the search folder to add 
		Type - variant, 
		optional. If specified, can be either one of the OlDefaultFolders enums 
		(olFolderCalendar, olFolderContacts, etc) or a string representing the 
		container class (PR_CONTAINER_CLASS in Extended MAPI), e.g. "IPF.Contact" 
		   | 
		
		  | 
	 
	
		
		Find(Filter) 
		 | 
		
		 Locates and returns the first 
		folder (RDOFolder) matching the specified 
		SQL style query (see example).  
		If no folders matches the query, 
		null is returned. 
		To locate subsequent matching 
		items, call FindNext repeatedly until null is returned. 
		See also Restrict 
		method. 
		  
		Filter - string. SQL 
		style query specifying the condition. Can either be a WHERE part only 
		(e.g. "Name LIKE 'C%' ") or a complete SQL expression with 
		the SELECT, WHERE and ORDER BY clauses (see example). 
		  
		The properties specified in 
		the SQL query must either use the Outlook Object Model (or RDO) property 
		name (e.g. Subject, Email1Address) or a DASL style 
		property name (e.g. "http://schemas.microsoft.com/mapi/proptag/0x0037001E", 
		"http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8083001E") 
		When a DASL property name is 
		used, it must be enclosed in double quotes. 
		Use
		OutlookSpy 
		to figure out the DASL property names - select an item in Outlook, click 
		IMAPIFolder button on the
		OutlookSpy 
		toolbar, select the property, see the "DASL" edit box on he right hand 
		side of the window. 
		  
		Including the SELECT clause 
		allows Redemption to pre-fetch the properties from the folder hierarchy 
		table without opening the item resulting in a significant performance 
		gain (see example). If you later access a property not specified in the 
		SELECT clause, Redemption will open the item. 
		  
		Including the ORDER BY clause 
		sorts the collection in the specified order. 
		  
		 | 
		
		  | 
	 
	
		
		FindNext 
		 | 
		
		 Returns the next folder 
		matching the restriction specified in a previous call to Find. It 
		returns null if no next object exists, for example, if already 
		positioned at the end of the collection. 
		  
		An error will be raised if 
		the Find method was not previously called. 
		  
		 | 
		
		  | 
	 
	
		| 
		 GetFirst  | 
		
		 Returns the first folder in 
		the specified RDOFolders collection. Returns Nothing if no first folder 
		exists, for example, if there are no subfolders. 
		   | 
		
		    | 
	 
	
		| 
		 GetLast  | 
		
		 Returns the last folder in 
		the specified RDOFolders collection. Returns Nothing if no last folder 
		exists, for example, if there are no subfolders. 
		   | 
		
		    | 
	 
	
		| 
		 GetNext  | 
		
		 Returns the next folder in 
		the specified RDOFolders collection. It returns Nothing if no next 
		folder exists, for example, if already positioned at the end of the 
		collection.    | 
		
		    | 
	 
	
		| 
		 GetPrevious  | 
		
		 Returns the previous folder 
		in the specified RDOFolders collection. It returns Nothing if no 
		previous folder exists, for example, if already positioned at the 
		beginning of the collection.    | 
		
		    | 
	 
	
		
		OpenOrAdd(Name, Type)  
		 | 
		
		 Opens the existing folder or 
		adds new subfolder to the 
		specified folder. Returns an RDOFolder 
		object. 
		This method is more efficient 
		(it is implemented on the store provider level) than the usual practice 
		of first attempting to call RDOFolders.Add, catch the 
exception, and then retrieve the existing folder by name using 
RDOFolders.Item (or 
RDOFolders[]). 
		  
		Name - string. The 
		name of the folder to add 
		Type - variant, 
		optional. If specified, can be either one of the 
		rdoDefaultFolders enums 
		(olFolderCalendar, olFolderContacts, etc) or a string representing the 
		container class (PR_CONTAINER_CLASS in Extended MAPI), e.g. "IPF.Contact" 
		   | 
		
		  | 
	 
	
		
		OpenOrAddSearchFolder(Name, Type) 
		 
		 | 
		
		 Opens the existing folder or 
		adds new search folder to the 
		specified folder. Returns an 
		RDOSearchFolder object. 
		  
		Name - string. The 
		name of the search folder to add 
		Type - variant, 
		optional. If specified, can be either one of the OlDefaultFolders enums 
		(olFolderCalendar, olFolderContacts, etc) or a string representing the 
		container class (PR_CONTAINER_CLASS in Extended MAPI), e.g. "IPF.Contact" 
		   | 
		
		  | 
	 
	
		| 
		 Remove(Index)  | 
		
		 Deletes a subfolder with the 
		specified index (1 to Count) 
		Index - integer, 1 
		through Count    | 
		
		    | 
	 
	
		
		Restrict(Filter) 
		 | 
		
		 Applies a filter to the 
		RDOFolders collection, returning a new 
		RDOFolders collection 
		containing all of the items from the original that match the filter. The 
		original RDOFolders collection is not affected. 
		  
		This method is an alternative 
		to using the Find method or FindNext method to iterate 
		over specific subfolders within a collection. The Find or FindNext 
		methods are faster than filtering if there are a small number of items. 
		The Restrict method is significantly faster if there is a large 
		number of items in the collection, especially if only a few items in a 
		large collection are expected to be found. 
		  
		Filter - string. SQL 
		style query. See Find method help for more information 
		  
		 | 
		
		  | 
	 
	
		
		Sort(Columns, Descending) 
		 | 
		
		 Sorts the collection of 
		folders 
		by the specified property or properties. 
		  
		Columns - can either 
		be an integer property tag or a variant array of integer property tags 
		or a comma separated string of the OOM or DASL property names (see 
		example) 
		  
		Descending - optional. 
		Either a boolean or 
	a variant array of boolean values corresponding to the Columns parameter. 
		   | 
		
		'Sort subfolders in the order displayed by Outlook 
		set Session = CreateObject("Redemption.RDOSession") 
		Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
		set folder = Session.Stores.DefaultStore.IPMRootFolder 
		'sort on two properties PR_SORT_POSITION and 
		PR_DISPLAY_NAME_W 
		Dim sortProps() 
		Redim sortProps(1) 
		'PR_SORT_POSITION 
		sortProps(0) = "http://schemas.microsoft.com/mapi/proptag/0x30200102" 
		'PR_DISPLAY_NAME_W 
		sortProps(1) = "http://schemas.microsoft.com/mapi/proptag/0x3001001F" 
		dim sorts() 
		Redim sorts(1) 
		sorts(0) = false 
		sorts(1) = false 
		set subFolders = folder.Folders 
		subFolders.Sort sortProps, sorts 
		for each f in subFolders 
   isHidden = f.Fields(&H10F4000B) 'PR_ATTR_HIDDEN 
   if not (isHidden) Then 
      Debug.Print f.Name 
    End If 
		next 
		 | 
	 
	
		
	
		
		
  | 
	 
	
		
		Events: | 
	 
	
		
		
  | 
	 
	
		| 
		 FolderChange(Folder)  | 
		
		 Fires when a subfolder in the 
		hierarchy table is modified. 
		Folder -
		RDOFolder object 
		   | 
		
		    | 
	 
	
		| 
		 FolderAdd(Folder)  | 
		
		 Fires when a new subfolder is 
		added to the hierarchy table. 
		Folder -
		RDOFolder object 
		   | 
		
		 Dim WithEvents InboxFolders 
		As Redemption.RDOFolders 
		... 
		Set Session = New 
		Redemption.RDOSession 
		Session.Logon 
		Set Store = Session.Stores.DefaultStore 
		Set Inbox = Store.GetDefaultFolder(olFolderInbox) 
		Set InboxFolders = Inbox.Folders 
		... 
		Sub 
		InboxFolders_FolderAdd(ByVal Folder As RDOFolder) 
  MsgBox "New subfolder added to the Inbox: " & Folder.Name 
		End Sub    | 
	 
	
		| 
		 FolderRemove(InstanceKey)  | 
		
		 Fires when a folder is 
		removed from the hierarchy table. 
		By the time this asynchronous even is fired, the folder is already 
		deleted, hence no entry id is available. 
		InstanceKey - a hex 
		value of the PR_INSTANCE_KEY property of the deleted table row. Note 
		that PR_INSTANCE_KEY is not available from the folder itself, only from 
		the MAPI table (see MAPITable property). InstanceKey is only guaranteed 
		to be the same for the same instance of the table, hence this event is 
		useful only if the value of PR_INSTANCE_KEY was previously cached. 
		   | 
		
		    | 
	 
	
		| 
		 CollectionModified  | 
		
		 Fires when the hierarchy table is modified and the underlying MAPI 
		implementation cannot provide more detailed information about the 
		change, e.g. when too many folders were modified at the same time.  
		When the event fires, it must 
		be assumed that the entire contents of the collection are no longer 
		valid.    | 
		
		    | 
	 
 
		 | 
	 
	 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                 |