如果这个问题被认为是不恰当的,因为它没有特定的代码问题而且更多的是我正在咆哮着正确的树,"请告诉我一个更好的场地。
如果没有,我是一个没有SSRS经验的完整堆栈.NET Web开发人员,我唯一的知识来自最近3个不眠之夜。我的团队正在开发的应用程序要求最终用户能够通过创建十几个预定义小部件类型的实例来创建任意数量的自定义仪表板。一些小部件就像图表或表一样简单,用户配置小部件以显示从较大集合中选择的可能字段的子集。我们有一些小部件是复合材料。 Web客户端都是有角度的,并且消耗了一个宁静的Web api。
还有两个要求,即每个小部件的合理传真可以根据请求或在预定时间下载为PDF报告。这个要求有几种解决方案,所以我不是在寻找替代解决方案。如果SSRS可以工作,它将使我们不必构建一个调度程序,并找到一种方法来利用现有的角度模板或创建基于它们的视图,填充它们并将其转换为pdf。我正在寻找的是他将了解报告生成最佳实践以及它们如何与.NET程序集交互。
我的具体任务是研究SSRS是否可以基于复合窗口小部件创建报告并将其下载为PDF或将其安排为一个,如果是,则创建基于包含2个折线图的复合窗口小部件的POC一张桌子。 PDF版本不需要以与图形位于同一行并且下面的表格的UI相同的方式显示。我可以在其上显示每个图表。只要显示顺序处于阅读顺序即可拥有。 (从左到右,然后到下一行)
一个示例案例可能是第一张图显示了去年过程中x-box的销售情况。它旁边的折线图显示了去年X-Box的新版本数量。下表中的报告显示了去年销售的X-box配件数量,按配件类型(控制器,耳机等)分组,按月计算,按每月总销售额排序。
上面的示例将需要3个查询。查询对于该特定仪表板上该窗口小部件的特定用户特定实例是唯一的。用户可以对组进行分组,选择排序列以及其他任何适用的列。
如何创建这些查询不是我的任务(至少现在还没有。)因此,假设一个神奇的查询引擎在数据库中正确创建并存储这些sql查询。
我的目标数据库是sql 2012及其'报告服务。我很失望它只支持2.0 clr。 OI有一个粗略的计划大纲,但鉴于我缺乏经验,我们将不胜感激。
看来我可以使用Soap服务进行调度和管理。这很直接。
我计划的其余部分听起来很疯狂。任何更正,指导和更好的建议都将受到欢迎。或者可能采用不同的方法。报表服务器是一个很大的安全漏洞,如果我只通过引用报表名称来完成要求,请指出我正确的方向。如果没有,这是我经过3天的研究和一些msdn简单教程拼凑在一起的过程。这是:
要成功创建报告定义,我需要引用整个超集中可用的每个可能字段。如果表的超集与图的超集相同,那么目前还不清楚,但是对于这个POC,我将假设它们是。这样,我只需要一个带有输入参数的存储过程来识别正确的查询,我将选择并执行该查询。结果集将是可能字段的一小部分,但存储过程将返回每个字段,省略字段的每一行都为空,以便报告知道每个字段。可怕。我可能会返回5列数据和500满空。一定有更好的方法。对性能影响的思考让我感到不安,但这很容易。现在我有一个可部署的报告。我不知道如何处理摘要。它们是否会附加到结果集中的附加查询?也许神奇的查询引擎知道。
现在有些额外的丑陋。我必须使用标识正确查询的查询字符串来请求报告URL。我猜我也可以使用正确的参数设置调度程序。但男人我有问题。我可以使用httpWebRequest为我的下载调用url,但调度程序究竟是如何工作的?我想它会以类似的方式创建报告,我应该能够以什么格式来呈现它。但对于下载,我将流式传输HTML。我如何告诉报表服务器将其转换为pdf然后将其流式传输?可以在部署之前在报告定义中设置吗?当我在报表服务器上玩游戏时,转换没有问题。但至少我发现了一种通过Web api访问报表服务器来保护报表服务器的方法。 然后是清理空列的问题。有扩展点,例如数据处理扩展。我认为这些几乎类似于网页生命周期中的一个步骤,但不完全确定,否则它们将被称为事件。我需要找到正确的一个,以便我可以删除空白数据列或饼图上的空白百分比标签,如果这不会破坏报告。我需要在它还是rdl时这样做。而且如果我还没找到方法,可以将rdl转换为pdf并更改内容类型。看来我可以在扩展点添加.net程序集。但这是否正确?我像开发人员一样思考,而不是像经验丰富的SSRS专业人士。我正在努力,但任何帮助我朝着正确方向前进的帮助都将不胜感激。