El método GetEx
Algunos atributos pueden almacenar uno o varios valores. Por ejemplo, el atributo otherTelephone de un objeto de usuario en Active Directory es una propiedad que puede tener cero, uno o varios valores. Los atributos que tienen varios valores se conocen como "atributos multivalor". Si el método IADs::Get se usa para recuperar un atributo multivalor, los resultados se deben procesar de forma diferente a si el atributo tiene un único valor. Los resultados proporcionados por el método IADs::GetEx , sin embargo, se procesan de la misma manera, independientemente de si el atributo tiene un único o varios valores. En ambos casos, el método IADs::GetEx devuelve los valores de una matriz.
El método IADs::GetEx recupera las propiedades de la memoria caché de propiedades. Si la propiedad especificada no se encuentra en la memoria caché, IADs::GetEx realiza una llamada implícita a IADs::GetInfo .
El método IADs::GetEx devuelve una matriz variant de variantes independientemente del número de valores devueltos desde el servidor. Esto es true incluso si el atributo solo contiene un valor.
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
El método IADs::GetEx también se puede usar para atributos con un solo valor. Los resultados de un atributo con un solo valor se procesan igual que los resultados de un atributo multivalor.
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
Si no se establece ningún valor para el atributo, IADs::GetEx devuelve el error "Propiedad no encontrada en la memoria caché".