哪个Crystal Reports和SSRS(SQL Server Reporting Services)更好用?
一方面,Crystal Reports是一堆昂贵且过于夸张的驴子便便,而另一方面,SSRS实际上履行了CR营销所做的所有承诺 - 而且它是免费的.
我对CR的蔑视源于多年来被迫使用这件可怕的事情.如果我能给你一些像水晶渡渡鸟俱乐部或Crystal Reports Sucks Donkey Dork这样的参考文献(不是很有趣,而是更有文化,并且有技术细节证实),那么详细说明CR的彻底恶劣就没有意义了.
自由?!对.您甚至不必购买MS SQL Server来获取它 - 您可以使用高级服务安装SQL Express.这可以下载包含SQL Server Reporting Services.虽然SQL Express在它可以支持的并发用户数量方面受到限制,但以下观察结果非常突出:
作为SQL Express的一部分获得的SSRS许可仅要求将其部署为SQL Express的一部分.没有任何禁止与其他数据源的连接或要求报告从SQL Server获取数据.
上述SSRS版本对用户连接没有内在限制.所有限制都强加于SQL Express数据库引擎.
SSRS使用ADO.NET,它包括开箱即用的Oracle,Jet(Access),OLEDB和ODBC驱动程序
因此,您可以将免费版本的SSRS连接到任何可以连接ADO.NET的后端,其中包括(例如)MySQL.罗里在下面的评论中告诉我,这是"不支持".这是真的,但我在许可证中找不到禁止它的任何内容,虽然驱动程序不是由SSExpress提供的,但它们肯定是由大多数版本的Visual Studio提供的,您可以在安装工具包中发送它们.这可能不是一个明确支持的配置,但那么呢?即使你确实拥有完整的MSSQL许可证,也可能会要求微软帮助你与某些第三方数据库进行交流(更不用说有点奇怪了).
我广泛使用SSRS来处理面向内部的报告以及嵌入在ASP.NET应用程序中的向外报告,这些报告为大量付费客户提供局服务.在我们的例子中,后备存储是Microsoft SQL Server 2008的许可副本,但这是我们的报告解决方案的技术优点的附带条件.
Crystal Reports声称支持一长串功能,但如果您需要超过五个用户,这些功能要么不起作用,要么需要昂贵的许可证.您甚至不能信任CR正确执行SQL.SELECT COUNT(*) FROM SOMETABLE WHERE 1=0
应该产生零的结果,但它产生一个.内置的查询引擎是有缺陷的,并且一个团队可以解决一堆业余爱好者可以免费做的事情(例如MySQL)没有希望从代码中获得任何你描述为性能的东西.
他们没有.邪恶的东西像没有底部的桶一样泄漏内存,如果使用SQL分析工具,你会发现效率非常低.
至于涉嫌的支持,我个人可以证明该对话框中调整的bug也水涨船高未修正的几十年后,他们第一次公开记录.如果你拿出你的信用卡并支付所要求的敲诈勒索赎金(我也希望得到很高的报酬来支持这种恐怖),你会发现自己正在和一个声称自己名字叫大卫的人说话,但莫名其妙地说它是"Dah-feet",谁甚至不理解你的问题,更不用说有答案了.
SSRS的支持情况非常相似,但它确实有效,因此您并不需要太多.
另一方面,SSRS完成CR声称的所有内容.它并非没有错误,但它们很少,并且它们很少能在一个以上的发布周期中存活.
SSRS设计器UI托管在Visual Studio IDE中.它以典型的微软风格呈现,但不仅如此,它还经过深思熟虑,融合了传统报表设计师的几个简单但根本的偏差.例如,要显示表格数据,您需要定义一个表,而不是摆弄单个文本框.因此,您不必为了将它们排成一行而烦恼,并且在它们上面放置边框是一个简单的样式表练习.
SSRS实际上完成了CR声称的所有功能,它价格低廉,有广泛可靠的技术文档,它可以扩展(也有文档记录),您可以将它连接到任何可以获得ODBC驱动程序的东西.这是没有道理的.
如何绑定页眉和页脚中的字段并不明显.
(据我所知),相对于页面底部的位置是不可能的.对于某些类型的报告而言,这是一个真正的问题,我可以想到没有解决方法.
交叉表中不支持expando水平汇总.
报表页眉和页脚没有直接支持.在报表布局的顶部和底部使用Rectangle对象,并正确设置分页符属性.或使用子报告.抱怨这个的人显然没有非常努力.
缺乏对重叠组间隔的支持(CR分组系统可以执行此操作)UPDATE SSRS 2008 R2现在支持此功能.它隐藏在分组编辑对话框中.查找"组变量"并阅读此内容.
它实际上看起来像重叠组也可以用SSRS2005完成,虽然我从来不知道.我想知道有没有人破解底部相对定位问题?
我一直在使用Crystal报告直到版本10,并且总是做我想成功的东西和ASP.NET应用程序.它在Web上的输出非常好,如WYSIWYG,并且导出到Excel和PDF也是准确的.印刷也非常正确.
最近,我已经在SSRS 2005上工作了大约一年,并且一直活着见证了许多必须提供开箱即用的缺点.SSRS Web输出随着浏览器和差异分辨率的不同而变化很大,很容易让开发人员生病.此外,报表查看器的滚动问题会使最终用户很早就发疯,因为它基于使用IFRAME的HTML.(注意:Crystal 13在Web查看器中使用IFRAME,它遭受零星的文本换行和重叠问题).出口并不好.您无法在单元格中左对齐或居中对齐图像,也无法为图像指定背景颜色.您无法居中对齐完整的报告正文.对于可能性,我已经使用渲染的HTML几个小时,并找出确切的替换,以使其工作,但SSRS开发人员不知道这些简单的修复,因为可能,他们从未使用过SSRS.
此外,在Web应用程序中,您需要为开箱即用的参数承载错误的UI.我已经完全删除了它并且在ASPX页面中创建它的成本让我想到使用ObjectDataSource和数据库分页技术来设计DataGrids中的表格报告.您无法根据需要布置参数.参数部分中的错误会回发完整报告而不做任何更改.使用分组进行分页可以使用技巧,但是在完整数据集上排序失败.对于中等到高级UI要求的每一点,SSRS花费了大量时间来确定它根本不可能.由于SSRS用户较少,因此在线社区对简单问题没有好的解决方案.不要忘记SSRS的好处是它的部署,内置通知,缓存和配置方面,但没有赢得的UI.
BOTTOMLINE是我看到SSRS让你感到沮丧,因为微软支持小组在他们不得不说'对不起'时没有反应!现在不是'一个月后'.SSRS 2008也没有立即修复这些问题.此外,转向SSRS'08也意味着完全迁移后端平台.记住这个等式,你使用软件的次数越多,随着时间的推移就越成熟,Crystal无论如何都是更好的选择,因为SSRS很快就会累积修复错误的成本.
您可以使用Reporting Services部署应用程序,方法是包含3个DLL文件.这是一个巨大的好处.(注意 - 你必须从GAC获得3个DLL文件中的一个.)
使用Crystal Reports,您必须在将运行应用程序(网站或客户端应用程序)的每台计算机上安装运行时.
Reporting Services具有大多数人需要的所有功能,部署更加轻松.除非必须,否则我永远不会使用Crystal Reports.
由于这个线程已经弹回,我将加上我的两分钱.在版本7和8天期间,我不得不使用Crystal大约三年.我讨厌它的每一分钟.我看过一些新版本,但仍然不喜欢它.
我非常不喜欢它,这让我很难说:从我的经验来看,Crystal比SSRS更适合复杂的报道.一位同事和我拼命想要一个适度复杂的报告布局在SSRS中工作并放弃了.我对产品的印象 - 只是我的意见,请注意 - 是它还没有为黄金时间做好准备.
水晶会让你讨厌你的生活并寻找另一份工作,但这是有原因的,它是如此普遍:它有效.
根据我的经验,Reporting Services更好.这是一个更好的环境,但最好的所有连接(数据源)都与报告分开并且可以共享.这使得环境之间的部署更加简单.
我已经使用了两者,我将在已经说过的内容中添加几点:
对于简单的东西,我建议默认使用SSRS.水晶有点臃肿和古怪.
Crystal可以轻松导出为MS Word格式(.doc).根据我的经验,客户经常想要这个.
如果格式化很重要,Crystal可能会更好.例如,SSRS报告在单个文本框中不能有多种类型的文本.这意味着您不能在报告顶部有一条注释,它包含斜体和普通文本.水晶可以做到这一点:
注意:此报告包含从开始日期到结束日期的数据,包括这些日期.
SRSS不能(没有多个重叠的文本框).我曾经给过一个20页的单词文档,转换成一个包含十几个图形和表格数据的报告.我从SSRS开始,但意识到在Crystal中我可以直接从单词复制和粘贴报告的硬编码位,带有彩色标题和所有内容,并节省了工作时间.因此,Crystal在许多方面确实拥有更好的"设计师".
更新:
显然,当前的SRSS中已修复了这两个问题.有人关心进一步评论吗?