The GetEx Method
Some attributes can store one or more values. For example, the otherTelephone attribute of a user object in Active Directory is a property that can have zero, one, or many values. Attributes that have multiple values are known as "multi-valued attributes". If the IADs::Get method is used to retrieve a multi-valued attribute, the results must be processed differently than if the attribute has a single value. The results provided by the IADs::GetEx method, however, are processed in the same manner, regardless if the attribute has a single or multiple values. In both cases, the IADs::GetEx method returns the values in an array.
The IADs::GetEx method retrieves properties from the property cache. If the specified property is not found in the cache, IADs::GetEx performs an implicit IADs::GetInfo call.
The IADs::GetEx method returns a variant array of variants regardless of the number of values returned from the server. This is true even if the attribute only contains one value.
Dim usr As IADs
On Error GoTo Cleanup
Set usr = GetObject("LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
homePhones = usr.GetEx("otherHomePhone")
For each phone in homePhones
Debug.Print phone
Next
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
The IADs::GetEx method can also be used for single-valued attributes. The results of a single-valued attribute are processed the same as the results for a multi-valued attribute.
Dim usr as IADs
On Error GoTo Cleanup
Set usr = GetObject("LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
sds = usr.GetEx("ntSecurityDescriptor")
For each sd in sds
Set acl = sd.DiscretionaryACL
Next
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
If no value is set for the attribute, IADs::GetEx returns the error "Property not found in cache".