我理解Crystal Reports已经失去了开发社区中的一些人的支持,也许是正确的:我在大约15年内没有使用它。但是当我这样做时,我可以唱歌。
也许这就是我发现SSRS如此令人失望的原因。该软件笨拙,非直观和一维。我上周一直在和它作斗争,我作为最后的手段在这里发帖。
我被迫完全在SQL Server表中创建我的报告,我不应该这样做。
例如:为什么我不能在文本框中使用表达式;
Fields!Foo1.Value/Fields.Foo2.Value
其中Foo1在Dataset1中,而Foo2在Dataset2中。
如果这超出了软件的能力,那就没问题。我开始认为它是。
所以也许有人可以回答这个问题:有没有人知道Crystal Reports和Reporting Services之外的任何其他报告软件更通用?
答案 0 :(得分:8)
我认为您现在已经解决了,但是如果您面临同样的问题,那么您可以在表达式中使用lookup
。
它使您可以浏览其他数据集的值,而两个数据集中都有一个公共字段
=Lookup(value in dataset1,value in dataset2, common field in both datasets, dataset name from which we need to get data)
答案 1 :(得分:6)
Crystal和SSRS都不允许您逐行直接比较两个不同数据集中的值。
在两个工具中:
有一个名为BIRT的报告工具,它具有与SSRS类似的报告范例(即,网络式布局,而不是Crystal的带状报告方法),包括与SSRS相同的功能,是开源的,并使您能够将数据集直接链接在一起以创建联合数据集。但是,使用它比Crystal或SSRS更不直观。
答案 2 :(得分:3)
坚持下去 - Reporting Services是一个非常灵活的报告平台。
您可以通过在字段名称后指定数据集来执行您想要的操作,但您必须指定所需的Foo2或您希望如何处理Foo2。
您这样做的方法是通过聚合函数。例如,假设Dataset2只有一行数据,那么你得到第一行数据:
=Fields!Foo1.Value / First(Fields!Foo2.Value, "Dataset2")
如果有很多行,你想要除以Foo2的总和,那么你可以这样做:
=Fields!Foo1.Value / Sum(Fields!Foo2.Value, "Dataset2")
关键是,您目前正在逐步完成数据集1 - 您需要让Reporting Services知道如何处理数据集2以便返回您需要的Foo2。