0

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

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

标签本身将仅包含 1 列,即一个 ID。

由于它是 Dynamics 365 CRM 在线环境,我必须在不使用 SQL 的情况下找到解决方案。我仅限于使用 FetchXML 和报告服务 (SSDT)。

任何帮助表示赞赏。

4

4 回答 4

1

我不是 SSRS 专家,所以我不能告诉你如何根据报告中的参数做一个重复值(不使用 CRM Online 报告中禁止的报告中的编码),但我可以看到的非常简单的解决方案是在 CRM 中创建一个特殊的实体,我们称之为标签。它应该有两个字段(与默认名称字段不同)- WholeNumber 字段(我们称之为 Count)和 Lookup 字段(您正在打印此标签的实体)。现在只需为此 Label 实体的 Post-RetrieveMultiple 创建一个插件 - 在此插件中,基于提供的 Count 和 Lookup 实体引用,您只需创建一个 Label 实体列表并将其放入您的 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 消息的 Post-Operation 上。

于 2017-07-27T09:51:48.413 回答
1

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

于 2017-08-02T08:33:44.270 回答
1

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

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

脚步

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

表达式示例

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

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

于 2017-08-03T13:28:15.953 回答
0

我一直无法找到一种简单的方法来做到这一点。虽然我怀疑存在一些创造性的解决方案,但我认为它与 FetchXML 无关——即它会涉及使 SSRS 根据参数中的数字重复一个值。

我还怀疑在同一份报告中重复输出任意次数可能会产生对齐挑战。

与其参与报表参数和 SSRS 编程,不如考虑制作一个简单、对齐良好的报表,生成一个标签。当用户去打印时,他们可以使用打印对话框来指定他们想要多少份。

于 2017-07-26T14:26:32.160 回答