您好我的ssrs报告在动态crm中,我要求当报告针对某条记录运行时,记录会传递记录ID,以便只显示相关结果。
这怎么可能?提供的步骤也很棒
使用SQL创建报告。
针对广告系列实体
运行答案 0 :(得分:1)
针对CRM的SSRS报告具有为您启用此功能的特殊参数。要按所选记录(或您打开的当前记录)进行过滤,您可以使用名为" CRM_Filtered [Entity]"的隐藏参数。其中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添加到它自己的DataSet中(对于这个名为DS_FilteredCampaign
的例子)。
创建DS_FilteredCampaign
后,请务必点击Refresh Fields
按钮。为参数值键入以下内容而不是<null>
:
select c.* from FilteredCampaign as c
一旦返回,请单击“确定”以保存数据集。
接下来,创建另一个隐藏文本参数(例如Int_FilteredCampaign
)并告诉它从DataSet获取其默认值(不是其可用值,即其默认值)。将值指向DS_FilteredCampaign
,您应该可以选择campaignid
作为其值字段。这实际上使参数成为您可以在主DataSet中引用的Ids数组
现在它更加实用,因为您可以在主DataSet中的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)
摘要步骤: