问题:
我们(也就是我,一个人)应该实现“用户生成的报告”(最多1个月,月底/新月初展示)。
问题 1:
所谓用户,是指没有任何技术技能的用户,例如 SQL 或 VBA。
问题 2:
技术只是 .NET,所以我不能使用 Java(以及基于 Java 的东西,比如 Jasper)
问题 3:
应该可以导出到 Excel(我的意思是 XLS 或 XLSX,而不是 XML 或 CSV)
问题 4:
数据分组应该是可能的(多组)
问题 5:
数据库是 Microsoft SQL-Server(推测是 2008 R2,但最终可能是 2008 R1 或 2005)
额外的“问题”:
基于 Web,使用 ASP.NET WebForms,但如果无法使用 Web,也可以基于桌面
现在除了那些要求和时间限制的荒谬之外......
一种解决方案是由 SSRS(SQL-Server 报告服务)提供的报告生成器。但是,有一些缺点,我认为这些缺点非常严重:
- 创建报表的用户基本上仍然需要了解 SQL(左、右、内、外连接及其后果)。由于用户可能不理解其中的区别,如果他们没有得到或得到错误的结果(例如空列上的内部联接),他们只会责怪我。
创建报告的用户对数据库/数据结构一无所知(例如软删除、持续日期)。此外,垃圾进垃圾出可能会成为一个问题,包括错误的数据等......
如果他们要创建一个矩阵,并且要对未舍入的值进行小计求和,则总计的总和不会与小计的总和相匹配,因为报告将在逗号后仅显示 2 位数字(因此将值四舍五入到 2 位)用于小计,但它将根据所有值的总和(未四舍五入)而不是小计的总和(四舍五入)计算总数。同样,他们会为此责备我或数据或报告生成器。
由于报表生成器不会在添加一个带有连接的附加表后显示结果数,因此用户将无法判断他们是否拥有正确的记录数,这将不可避免地导致错误的结果。再一次,他们会责怪我。
日期过滤器:需要应用它们,但不一定在 where 中,而是在 join 中。报表生成器不支持。不可能创建这样一份严肃的报告。
状态:如前所述,我们使用软删除和状态字段为 99 的已删除记录。where 中的过滤状态是危险的,有时必须发生在 join 中。同样,报表生成器不支持这一点,除非您使用原始 SQL,因为用户不会了解 SQL,所以这毫无意义。
安装报表生成器需要管理员权限,或者客户公司的 IT 部门来安装它。以及适用于相应 ReportBuilder 的相应 .NET 框架,以及适用于相应 Report-Server 的相应 ReportBuilder,因为 SQL-Server 2005 Reporting Service 不适用于 SQL-Server 2008 Reporting Services 的报告,而 SQL 2008 R1 不适用于R2。这也要求所有能够做到这一点的用户都处于某个 SQL-Server 报告服务报告生成器用户角色中,这要求 IT 部门将用户放入适当的活动目录组中,到目前为止,该组从未与任何我们的客户。另外,我不相信 IT 部门知道他们安装了适当的 ReportBuilder,如果他们同意安装的话。
现在我曾经(很久以前)碰巧在 youtube 上查看了 SSAS(SQL-Server 分析服务)的演示文稿。
但是我再也找不到链接了。
但无论如何,我没有任何 SSAS 经验,只有 SSRS。
我认为有可能以这样的方式滥用 SSAS,用户可以通过 Excel 连接到它,并获取数据并或多或少地像他们想要的那样对它们进行汇总。此外,他们将能够看到原始数据。
我可以预先准备一些查询表中的原始数据(我也可以通过数据集使用 reportbuilder)。
有没有人足够了解 SSAS 来告诉我在这段时间内这是否可行?
如果分析服务器和 Excel 版本 (2007/2010) 所需的加载项与所有分析服务器版本兼容,或者从 Excel 2007 访问 2008 R2 或从 Excel 2010 访问 SSAS-2005 时出现问题。
或者我是否一定会遇到 SSAS 比 ReportBuilder 更多的问题?