SSRS 报告动态 crm 将当前记录 ID 用作参数
SSRS reports dynamics crm have current record id used as parameter
你好,我的 ssrs 报告 在 dynamics crm 中,我要求当报告针对特定记录 运行 时,记录传递记录 id,以便仅显示相关结果。
这怎么可能?提供的步骤也很棒
报告是使用 SQL 创建的。
运行 针对活动实体
CRM 的 SSRS 报告具有特殊参数,可以为您启用此功能。要按 selected 记录(或您打开的当前记录)进行过滤,您可以使用名为 "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,而是可以通过基于文本创建 dataset/parameter 组合来简化使用。实际上,将 SQL 文本转换为值列表。
所以将上面的SQL添加到它自己的DataSet中(对于这个例子叫做DS_FilteredCampaign
)。
创建 DS_FilteredCampaign
后,确保单击 Refresh Fields
按钮。为参数值键入以下而不是 <null>
:
select c.* from FilteredCampaign as c
返回后单击“确定”保存数据集。
接下来,创建另一个隐藏文本参数(例如 Int_FilteredCampaign
)并告诉它从 DataSet 中获取默认值(不是它的可用值,它的默认值)。将值指向 DS_FilteredCampaign
,您应该可以将 select campaignid
作为其值字段。这实际上使参数成为您可以在主 DataSet
中引用的 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) 执行传递给 CRM_FilteredCampaign
的 SQL
- 刷新数据集上的字段以获取 campaignid 字段
- 创建一个文本参数 (Int_FilteredCampaign),使用新数据集 (DS_FilteredCampaign) 检索其 默认值 值 [=54] 使用 campaignid =]
- 在您的 dsMain 数据集中引用这个新参数
你好,我的 ssrs 报告 在 dynamics crm 中,我要求当报告针对特定记录 运行 时,记录传递记录 id,以便仅显示相关结果。
这怎么可能?提供的步骤也很棒
报告是使用 SQL 创建的。
运行 针对活动实体
CRM 的 SSRS 报告具有特殊参数,可以为您启用此功能。要按 selected 记录(或您打开的当前记录)进行过滤,您可以使用名为 "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,而是可以通过基于文本创建 dataset/parameter 组合来简化使用。实际上,将 SQL 文本转换为值列表。
所以将上面的SQL添加到它自己的DataSet中(对于这个例子叫做DS_FilteredCampaign
)。
创建 DS_FilteredCampaign
后,确保单击 Refresh Fields
按钮。为参数值键入以下而不是 <null>
:
select c.* from FilteredCampaign as c
返回后单击“确定”保存数据集。
接下来,创建另一个隐藏文本参数(例如 Int_FilteredCampaign
)并告诉它从 DataSet 中获取默认值(不是它的可用值,它的默认值)。将值指向 DS_FilteredCampaign
,您应该可以将 select campaignid
作为其值字段。这实际上使参数成为您可以在主 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)
总结步骤:
- 您有一个名为 dsMain 的主数据集
- 创建一个名为 CRM_FiltetedCampaign 的新参数
- 创建一个数据集 (DS_FilteredCampaign) 执行传递给 CRM_FilteredCampaign 的 SQL
- 刷新数据集上的字段以获取 campaignid 字段
- 创建一个文本参数 (Int_FilteredCampaign),使用新数据集 (DS_FilteredCampaign) 检索其 默认值 值 [=54] 使用 campaignid =]
- 在您的 dsMain 数据集中引用这个新参数