【问题标题】:SSRS reports dynamics crm have current record id used as parameterSSRS 报告动态 crm 将当前记录 id 用作参数
【发布时间】:2017-03-13 18:39:21
【问题描述】:

嗨,我的 ssrs 报告在动态 crm 中,我要求当针对某个记录运行报告时,记录传递记录 id,以便只显示相关结果。

这怎么可能?提供的步骤也很棒

报告是使用 SQL 创建的。

针对活动实体运行

【问题讨论】:

    标签: dynamics-crm ssrs-2008-r2 ssrs-2012


    【解决方案1】:

    CRM 的 SSRS 报告具有特殊参数,可为您启用此功能。要按选定记录(或您打开的当前记录)进行过滤,您可以使用一个名为“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 添加到它自己的 DataSet 中(对于这个例子叫做DS_FilteredCampaign)。

    创建DS_FilteredCampaign 后,请确保单击Refresh Fields 按钮。输入以下内容而不是 <null> 作为参数值:

    select c.* from FilteredCampaign as c
    

    返回后单击“确定”以保存数据集。

    接下来,创建另一个隐藏文本参数(例如Int_FilteredCampaign)并告诉它从 DataSet 中获取默认值(不是它的可用值,而是它的默认值)。将值指向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) 来执行传递给 CRM_FilteredCampaign 的 SQL
    • 刷新数据集上的字段以获取活动 ID 字段
    • 创建一个文本参数 (Int_FilteredCampaign),该参数使用新数据集 (DS_FilteredCampaign) 检索其默认值,并使用值作为值的活动 ID
    • 在 dsMain 数据集中引用这个新参数

    【讨论】:

    • 我如何才能将它与当前有 3 个连接到活动、活动指针和活动响应实体的当前 sql 查询和数据集相匹配。
    • 有很多方法可以合并参数并使其更有用。我将用这个例子很快地扩展这个问题,但你如何做到这一点的总结是根据参数创建一个数据集并执行它。然后基于该参数并在您的报告中引用它。我将用一个例子来扩展这个问题......
    • 那么我是否要创建另一个数据集来设置参数,然后在现有数据集中引用它?
    • 如果你的意思是“CRM_FilteredCampaigm”参数,没有。 CRM 将为您设置参数。您所要做的就是确保它可供使用。然后,您可以创建一个在该参数上调用“exec”的数据集,并通过您创建的另一个参数引用该数据集。基本上只是将它们的参数转换为更容易在“真实”数据集中引用的 id 列表。
    • 对不起,我的意思是如何使参数可用,与我现有的 sql 数据集或我是否使用上面的查询创建一个新的数据集?很抱歉有这么多问题,但我感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多