Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 是否使用参数控制基于FetchXML的报告的恶意标签数?_Reporting Services_Dynamics Crm_Sql Server Data Tools_Fetchxml_Dynamics Crm 365 - Fatal编程技术网

Reporting services 是否使用参数控制基于FetchXML的报告的恶意标签数?

Reporting services 是否使用参数控制基于FetchXML的报告的恶意标签数?,reporting-services,dynamics-crm,sql-server-data-tools,fetchxml,dynamics-crm-365,Reporting Services,Dynamics Crm,Sql Server Data Tools,Fetchxml,Dynamics Crm 365,我试图构建一个简单的邮件标签报告,在运行时让用户选择为每条记录生成的标签数量 Solutionwize我认为报告参数是用户选择要生成的每条记录的标签数量的方法,但在这之后我有点卡住了 标签本身将只包含一列,一个ID 由于这是一个Dynamics 365 CRM在线环境,我必须找到一个不使用SQL的解决方案。我仅限于使用FetchXML和reporting services(SSDT) 非常感谢您的帮助。我一直找不到一个简单的方法来做到这一点。虽然我怀疑存在一些创造性的解决方案,但我认为它与Fet

我试图构建一个简单的邮件标签报告,在运行时让用户选择为每条记录生成的标签数量

Solutionwize我认为报告参数是用户选择要生成的每条记录的标签数量的方法,但在这之后我有点卡住了

标签本身将只包含一列,一个ID

由于这是一个Dynamics 365 CRM在线环境,我必须找到一个不使用SQL的解决方案。我仅限于使用FetchXML和reporting services(SSDT)


非常感谢您的帮助。

我一直找不到一个简单的方法来做到这一点。虽然我怀疑存在一些创造性的解决方案,但我认为它与FetchXML无关——也就是说,它将涉及让SSR根据参数中的数字重复一个值

我还怀疑在同一个报告中重复输出任意次数可能会产生对齐问题


<>而不是参与报表参数和SSR编程,也许考虑制作一个简单的、对齐的报表,生成单个标签。当用户转到打印时,他们可以使用“打印”对话框指定需要的副本数

我一直找不到一个简单的方法来做到这一点。虽然我怀疑存在一些创造性的解决方案,但我认为它与FetchXML无关——也就是说,它将涉及让SSR根据参数中的数字重复一个值

我还怀疑在同一个报告中重复输出任意次数可能会产生对齐问题


<>而不是参与报表参数和SSR编程,也许考虑制作一个简单的、对齐的报表,生成单个标签。当用户转到打印时,他们可以使用“打印”对话框指定需要的副本数

我不是SSRS专家,所以我无法告诉您如何根据报告中的参数重复值(不在报告中使用CRM在线报告中禁止的编码),但我看到的非常简单的解决方案是在CRM中创建一个特殊实体,我们称之为Label。它应该有两个字段(默认名称字段中的aparat)——WholeNumber字段(我们称之为Count)和Lookup字段(打印此标签的实体的)。现在,只需创建一个插件,用于此标签实体的后期检索倍数-在基于提供的计数和查找实体引用的插件中,您只需创建一个标签实体列表,并将其放入OutputParameter。接下来,只需使用适当的FetchXML创建SSRS报告(该报告将有一个由用户提供的参数,并且只需记录运行报告的id)。您的插件将返回您想要的任意多的记录,因此您只需抓取它们并在tablix中显示在您的报告中。为了让您了解我在这里谈论的是该插件的一些示例代码:

public void Execute(IServiceProvider serviceProvider)
{

    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    var query = (QueryExpression)context.InputParameters["Query"];
    //get values from your query
    int labelsToGenerate = 10;
    var label = new Entity("new_label");
    /////

    label["new_name"] = Guid.NewGuid();

    var labelCollection = new EntityCollection();
    labelCollection.Entities.AddRange(Enumerable.Repeat(label, labelsToGenerate));

    context.OutputParameters["EntityCollection"] = labelCollection;
}

请记住,要使其工作,必须在RetrieveMultiple message的后期操作中进行。

我不是SSRS专家,因此我无法告诉您如何根据报告中的参数执行重复值(不使用CRM在线报告中禁止的报告中的编码),但我看到的一个非常简单的解决方案是在CRM中创建一个特殊的实体,我们称之为Label。它应该有两个字段(默认名称字段中的aparat)——WholeNumber字段(我们称之为Count)和Lookup字段(打印此标签的实体的)。现在,只需创建一个插件,用于此标签实体的后期检索倍数-在基于提供的计数和查找实体引用的插件中,您只需创建一个标签实体列表,并将其放入OutputParameter。接下来,只需使用适当的FetchXML创建SSRS报告(该报告将有一个由用户提供的参数,并且只需记录运行报告的id)。您的插件将返回您想要的任意多的记录,因此您只需抓取它们并在tablix中显示在您的报告中。为了让您了解我在这里谈论的是该插件的一些示例代码:

public void Execute(IServiceProvider serviceProvider)
{

    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    var query = (QueryExpression)context.InputParameters["Query"];
    //get values from your query
    int labelsToGenerate = 10;
    var label = new Entity("new_label");
    /////

    label["new_name"] = Guid.NewGuid();

    var labelCollection = new EntityCollection();
    labelCollection.Entities.AddRange(Enumerable.Repeat(label, labelsToGenerate));

    context.OutputParameters["EntityCollection"] = labelCollection;
}

请记住,要使其工作,它必须在RetrieveMultiple message的后期操作中。

我建议放弃报告方法,而是创建一个智能webresource,该资源将接受fetchxml来选择记录(普通xml或对现有视图的引用)和一个计数参数。

我建议放弃报告方法,而是创建一个智能webresource,该资源将接受fetchxml来选择记录(普通xml或对现有视图的引用)和一个计数参数。

如果要创建的每条记录的邮件标签数量合理较低,则此方法有效。如果您需要为每条记录创建数百个标签,我会说这个解决方案太麻烦了

我就是这样设法让它工作的:

步骤

  • 创建“普通”邮件标签报告:一个列数与要创建的邮件标签格式匹配的列表
  • 使用预定义值创建报表参数,例如1-10
  • 在报表设计器中,复制列表中的行数,以便与前面在步骤2中创建的参数中指定的行数相同。在我的例子中,我现在有10行
  • 隐藏行2-10,使其不可见,除非用户选择与要显示的行数相对应的参数值。为此创建一个表达式。只需右键单击行,在visability下有一个基于表达式显示/隐藏的选项 表达式示例

       Row 2: =IIF(Parameters!Amount.Value < 2, True, False)
       Row 3: =IIF(Parameters!Amount.Value < 3, True, False)
    
    第2行:=IIF(参数!Amount.Value<2,True,False)
    第3行:=IIF(参数!Amount.Value<3,True,False)
    

    虽然这种方法有效并实现了我的目标,但它并不像我希望的那样优雅。将解决方案动态化会更好。

    如果邮件数