hi for Dynamics CRM中的SSR报告我要求,当报告按照某个记录运行时,记录通过记录ID,以便仅显示相关结果。
这怎么可能?提供的步骤也很棒
使用SQL。
创建报告反对活动实体
SSRS报告的CRM报告具有特殊参数,可以为您启用这一点。要通过选定的记录(或您已打开的当前记录)过滤,您可以使用一个名为" CRM_FILTERED [entity]的隐藏参数",其中实体是您将报告链接到的相关实体。
在您的情况下,即对于广告系列实体,此隐藏的参数将称为CRM_FILTEREDCAMPAIGN。对于SQL报告,这将是文本参数,并将设置为类似的内容(由CRM设置在运行报告时)
select campaign0.* from FilteredCampaign as "campaign0"
我没有一个报告可以准确检查SQL所包含的内容,因此可能不确定。但是你明白了。有几种方法可以将其嵌入您的报告中,但是您可以在数据集中以这种基本方式这样做:
declare @sql as nVarchar(max)
set @sql = 'SELECT c.campaignid FROM (' + @CRM_FilteredCampaign + ') as c'
exec(@sql)
扩展此处,即,您可以通过基于文本的数据集/参数组合来简化主数据集中的文本SQL,而是可以简化用法。实际上,将SQL文本转换为值列表。
因此,将上述SQL添加到其自己的数据集中(对于此示例称为DS_FilteredCampaign
)。
创建DS_FilteredCampaign
后,请确保单击Refresh Fields
按钮。输入以下而不是<null>
以获取参数值:
select c.* from FilteredCampaign as c
返回后,单击确定以保存数据集。
接下来,创建另一个隐藏的文本参数(例如Int_FilteredCampaign
),并告诉其从数据集中获取其默认值(不是其可用值,默认值)。将值指向DS_FilteredCampaign
,您应该能够选择campaignid
作为其值字段。这实际上使参数成为您可以在主数据集中引用的ID数组
现在,它更可用,因为您可以在主数据集中的SQL中引用它:
select c.*
from FilteredCampaign c
inner join ActivityPointer ap on ...
inner join FilteredAccount a on ...
where c.campaignid in (@Int_FilteredCampaign)
重要的作品是 where c.campaignid in (@Int_FilteredCampaign)
摘要步骤:
- 您有一个主数据集,称为DSMAIN
- 创建一个名为CRM_FILTETEDCAMPAIGN的新参数
- 创建一个数据集(DS_FILTEREDCAMPAIGN),该数据集执行SQL传递到CRM_FILTEREDCAMPAIGN
- 刷新数据集中以获取ApaignId字段
- 创建一个文本参数(INT_FILTEREDCAMPAIGN),该参数使用新数据集(DS_FILTEREDCAMPAIGH)检索其默认值
- 在您的dsmain数据集中引用此新参数