9

我知道 Crystal Reports 在开发社区中已经失去了一些人的青睐,也许这是正确的:我已经有 15 年没有使用它了。但是当我这样做时,我可以让它唱歌。

也许这就是我觉得 SSRS 如此令人失望的原因。该软件笨拙,不直观且一维。上周我一直在与它作斗争,作为最后的手段,我在这里发帖。

我被迫完全在 SQL Server 表中创建我的报告,我不应该这样做。

例如:为什么我不能在文本框中使用表达式;

 Fields!Foo1.Value/Fields.Foo2.Value

其中 Foo1 在 Dataset1 中,而 Foo2 在 Dataset2 中。

如果这超出了软件的能力,那没关系。我开始认为是。

所以也许有人可以回答这个问题:除了Crystal Reports 和Reporting Services,还有谁知道其他更通用的报表软件吗?

4

3 回答 3

9

我想你现在应该已经解决了,但是如果你面临同样的问题,那么你可以lookup在表达中使用。
它使您能够浏览其他数据集的值,而这两个数据集中都有一个公共字段

=Lookup(value in dataset1,value in dataset2, common field in both datasets, dataset name from which we need to get data)
于 2012-05-10T07:21:45.770 回答
6

Crystal 和 SSRS 都不允许您逐行直接比较两个不同数据集中的值。

这两种工具中:

  • 如果两个数据集都来自同一个关系数据库,那么比较值的最简单方法是将两个数据集组合成一个查询。
  • 如果两个数据集来自可以链接在一起的不同关系数据库(例如,通过使用 SQLServer 中的链接服务器或 Oracle 中的数据库链接),那么比较值的最简单方法是将两个数据集组合成一个访问两个链接的数据库。
  • 如果两个数据集都来自无法直接链接在一起的数据源,则可以通过子报表在 Crystal/SSRS 中将这两个数据集链接在一起。(有关 SSRS 中的子报告的更多详细信息,请点击此处。)

有一个名为 BIRT 的报告工具,它具有与 SSRS 类似的报告范式(即 Web 样式的布局,而不是 Crystal 的带状报告方法),包括与 SSRS 大致相同的功能,是开源的,使您能够将数据集链接在一起直接创建联合数据集。但是,它的使用不如 Crystal 或 SSRS 直观。

于 2012-04-27T09:36:00.353 回答
3

坚持下去 - Reporting Services 是一个非常灵活的报告平台。

您可以通过在字段名称后指定数据集来做您想做的事情,但您必须指定您想要的 Foo2 或您想要如何处理 Foo2。

你这样做的方式是通过聚合函数。例如,假设 Dataset2 只有一行数据,那么您会得到第一个:

=Fields!Foo1.Value / First(Fields!Foo2.Value, "Dataset2")

如果有很多行并且您想除以 Foo2 的总和,那么您可以这样做:

=Fields!Foo1.Value / Sum(Fields!Foo2.Value, "Dataset2")

关键是,您当前正在逐步执行 Dataset1 - 您需要让 Reporting Services 知道如何处理 Dataset2 才能返回您需要的 Foo2。

于 2012-04-27T00:18:54.353 回答