区分Crystal Reports的最佳方法是什么?
如果我们具有同一报告(.rpt)的两个版本,并且想要确定确切的区别,那么最好的方法是什么?我已经看到了一些商业工具可以做到这一点,但是我对花钱买些相对简单的东西不太感兴趣。我可以插入Crystal API并仅列出每个字段或者所有内容的所有属性吗?请有人告诉我,某个地方有一个开源项目可以执行此操作... @ :-)
@Kogus,因为文本隐藏了格式上的差异,所以不会将输出进行差异化吗?
@ladoucep,我似乎无法在没有数据的情况下导出报告。
解决方案
回答
一种有用的技术是将报告的两个版本输出为纯文本,然后将这些输出进行比较。
我们可以使用Crystal Report组件编写一些内容来描述报告的每个属性,如我们所描述的。然后,我们可以将其输出到文本,并进行比较。我不知道有任何适合开源工具,但是编写它并不是很难。
@帖子中的问题:
如果相对位置已更改,则仅对输出进行差异显示格式更改。例如,如果我有这个:
前:
名,姓,地址
后:
姓,名,地址
然后,这将显示为一个差异。
但是,如果我只是将地址栏增加了几个像素,或者将其从纯文本更改为粗体,那么我们是对的,那将不会显示。
回答
我过去使用过的一种有效的技术是基于相同的数据从两个版本中打印出报告。然后,我从每个版本中获取第一页,将一个页面放在另一个页面的上方(重要的是不要将它们混在一起)并放在一个窗口中。通常,很容易看到任何差异,并且可以使用合适的书写工具(例如铅笔)手动注释这些差异。对报告中的每个页面重复此操作。
诚然,对于大型报告,这可能非常耗时且容易出错,但是可以通过耐心和谨慎来克服这些局限性。
回答
Can I hook into the Crystal API and simply list all of the properties of every field or something? Please someone tell me that there's an Open Source project somewhere that does this... @:-)
实际上有这样的API。我编写了一个VB6应用程序来完成我们所要求的工作以及更多工作。我想我什至将其迁移到VB.Net。因为这是供我自己使用的,所以我并没有花太多时间使它"抛光"。我一直打算发行它,但是我没有时间...
我过去使用的另一种方法是创建一个Access应用程序,以帮助管理大型的报表开发项目。它的众多功能之一包括能够提取报表所使用的表,以及其命令和SQL表达式所使用的SQL语句。目的是提供一个全局视图,以了解哪些报告使用哪些表。我可能还是在某处...
**编辑1 **
BusinessObjects Enterprise XI(R?)具有名为"元管理器"的功能。它将定期检查存储库的内容,并将结果保存到数据库中。它使用报表应用程序服务(RAS)生成元数据。当然,这是一个额外的5位数字许可证。
**编辑2 **
考虑使用PowerShell完成这项工作:PsCrystal。