Reporting services 是否使用参数控制基于FetchXML的报告的恶意标签数?
我试图构建一个简单的邮件标签报告,在运行时让用户选择为每条记录生成的标签数量 Solutionwize我认为报告参数是用户选择要生成的每条记录的标签数量的方法,但在这之后我有点卡住了 标签本身将只包含一列,一个ID 由于这是一个Dynamics 365 CRM在线环境,我必须找到一个不使用SQL的解决方案。我仅限于使用FetchXML和reporting services(SSDT)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
非常感谢您的帮助。我一直找不到一个简单的方法来做到这一点。虽然我怀疑存在一些创造性的解决方案,但我认为它与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或对现有视图的引用)和一个计数参数。如果要创建的每条记录的邮件标签数量合理较低,则此方法有效。如果您需要为每条记录创建数百个标签,我会说这个解决方案太麻烦了 我就是这样设法让它工作的: 步骤
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)
虽然这种方法有效并实现了我的目标,但它并不像我希望的那样优雅。将解决方案动态化会更好。如果邮件数