2011-02-28 10 views
8

En Dynamics CRM, a menudo recibo requisitos de usuarios comerciales para crear informes. Los usuarios comerciales conocen y hablan de nombres de visualización de entidades y etiquetas de atributos. Para escribir una consulta, necesito asignarlos a nombres de entidades y nombres de atributo. Me gustaría utilizar una consulta para buscar esto.Cómo unir dbo.LocalizedLabelView para obtener etiquetas de formulario en Dynamics CRM?

¿A qué se une la vista dbo.LocalizedLabelView para obtener la columna AttributeLabel en la siguiente consulta? No puedo entender a qué se supone que ObjectId hace referencia. (Y si usted me puede decir cómo calculó la respuesta estaría especialmente agradecidos!)

select 
    [EntityName]   = entityNames.Name, 
    [EntityDisplayName] = entityDisplayNames.Label, 
    [AttributeName]  = attributeNames.PhysicalName, 
    [AttributeDisplayName] = attributeDisplayNames.Label 
    --[AttributeLabel]  = attributeLabels.Label 
from 
    dbo.EntityView entityNames 

    inner join dbo.LocalizedLabelView entityDisplayNames 
     on entityDisplayNames.ObjectId = entityNames.EntityId 
     and entityDisplayNames.ObjectColumnName = 'LocalizedName' 

    left outer join dbo.AttributeView attributeNames 
     on attributeNames.EntityID = entityNames.EntityID 

    inner join dbo.LocalizedLabelView attributeDisplayNames 
     on attributeDisplayNames.ObjectId = attributeNames.AttributeID 
     and attributeDisplayNames.ObjectColumnName = 'DisplayName' 
     and attributeDisplayNames.LanguageID = entityDisplayNames.LanguageID 

    --inner join dbo.LocalizedLabelView attributeLabels 
    -- on attributeLabels.ObjectId = ????? 
    -- and attributeLabels.LanguageID = entityDisplayNames.LanguageID 
where 
    entityDisplayNames.LanguageID = 1033 
order by 
    entityDisplayNames.Label, 
    attributeDisplayNames.Label 

Respuesta

9

OBJECTID es una referencia al ID interno de una cosa en la base de datos de CRM. Esto puede ser un atributo, entidad, etiqueta o lo que sea.

Dado que desea la etiqueta de su atributo, use la identificación de ese atributo como el ObjectId aquí. Creo que usted quiere que su condición de unión para parecerse a esto:

inner join dbo.LocalizedLabelView attributeLabels 
    on attributeLabels.ObjectId = attributeNames.AttributeID 
    and attributeLabels.LanguageID = entityDisplayNames.LanguageID 
    and attributeLabels.ObjectColumnName = 'DisplayName' 

Si desea que la descripción del atributo, puede cambiar el ObjectColumnName a 'Descripción'.

Cuestiones relacionadas