如何在 MSCRM 中获取选项集描述字段

How to get Option Set Description field in MSCRM

我试图找到选项集描述在 CRM 数据库中的存储位置。在互联网上进行研究后,我发现选项集数据存储在 StringMap SQL table 中,但是这个 table 不包含我想要的描述字段。

有谁知道选项集描述在 CRM 的 SQL 数据库中的存储位置?下面是突出显示我正在寻找的字段值的屏幕截图:

这似乎有效:

 SELECT DISTINCT l.Label
 FROM MetadataSchema.LocalizedLabel l
 LEFT JOIN MetadataSchema.AttributePicklistValue ap ON l.ObjectId = ap.AttributePicklistValueId
 LEFT JOIN MetadataSchema.OptionSet os ON os.OptionSetId = ap.OptionSetId
 WHERE l.ObjectColumnName = 'Description' AND os.Name = '<OPTIONSET_NAME>' AND ap.Value = <OPTIONSET_VALUE>

以上脚本中有两个参数需要修改:

  • <OPTIONSET_NAME> 必须替换为您的选项集的模式名称,并以实体的模式名称为前缀。例如,如果您的选项集称为 new_businessTypes 并且它位于 account 实体上,则 <OPTIONSET_NAME> 将替换为'account_new_businesstypes'.
  • <OPTIONSET_VALUE> 必须替换为您要查找的选项的整数值。在您的示例屏幕截图中,该值为 2.

试试这个:

SELECT Label FROM [LocalizedLabelView] llv
join [AttributePicklistValueView] apvv on llv.ObjectId = apvv.AttributePicklistValueId
join [OptionSetView] osw on apvv.OptionSetId = osw.OptionSetId
join [AttributeView] aw on osw.OptionSetId = aw.OptionSetId
where aw.Name = 'fieldname' and llv.ObjectColumnName = 'Description'

这适用于全局和非全局选项集,您只需将实体属性的名称作为字段名(而不是全局选项集的名称)。当然只处理全局选项集你不需要最后一个连接,简单地做 osw.Name = 'globaloptionsetname'