Crystal Reports与SQL查询

时间:2013-10-04 05:21:41

标签: sql database crystal-reports

我是一名程序员(主要是C ++),他已进入非软件工作场所。但是,我对数据库的东西没有多少经验。

TL; DR:如果我们将Crystal Reports与仅编写执行SQL查询并解析结果的脚本进行比较,那么CR是否可以通过SQL查询&脚本?我纯粹是在提取数据方面谈论 - 而不是制作漂亮的文档。


详情:

在我的工作场所,他们有一个过程,您可以运行一堆Crystal Reports,将日期范围修改为当前月份,手动将每个日期范围导出到Excel,删除不需要的行和列,然后剪切并粘贴进入管理层使用的摘要excel文档。

对我而言,这是非常疯狂和愚蠢的。我想自动化/编写大部分内容。

所以我有两个选择:

  • 了解Crystal Reports并尝试将现有报告修改为更加自动化。
  • 转储CR并学习SQL,并使用处理CSV文件的脚本以编程方式完成整个过程。

我更喜欢学习SQL,因为它更通用,更实用。但我需要确信我可以获得我需要的数据输出(无需编写一百万行代码来自己重现CR。)

所以,是的,我正在寻找一个答案,“两者是等价的。你可以在CR中做任何事情,你可以通过脚本和SQL轻松完成,”或“如果你需要根据一个分类将记录分组参数,然后将他们的一个字段相加,然后CR将比原始代码更容易做到,“将我推向一个方向或另一个方向。

编辑: 一些额外的细节。目前,我的水晶报告运行数据库查询,然后水晶做了类似的事情,“不显示返回的记录,而是按字段A对记录进行分组,然后显示每个组中记录的数量。”

这样的功能难以通过SQL编码重现吗?例如,我不想写一个python(或其他)脚本来解析和处理来自明文CSV的数据。

6 个答案:

答案 0 :(得分:3)

您不能只比较SQL和CR - 它们有不同的用途。 SQL(在此上下文中)是数据源,CR是相当的输出格式化程序。对于excel,您需要数据,而不是格式化输出。 Excel结合SQL可以为您提供所有CR选项(动态交叉表报表,图表等),您无法直接从SQL数据中获取。 顺便说一下,通常需要创建SQL视图或过程来克服CR限制;从这个角度来看,SQL有比CR更多的选项。

我个人会选择SQL + Excel路由。在我们公司,我们只使用SQL + CR而不进行后处理,有时使用SQL + Excel。我们的客户正在使用不同的方法。

但正如其他人所说,工具的选择取决于更多的东西。谁必须重新设计报告?谁将维护这些报告?需求变化的频率如何?除了采购Excel表格之外,CR报告还有更多用途吗?如果报告不起作用,谁会在晚上醒来?

答案 1 :(得分:2)

管理层: 在很多我会说大多数案例管理不知道SQL。因此,如果E.g.HR的经理想要了解某事情,那么他将如何获得这种状态?这是Crystal报告的图片,使用水晶报告他们不必担心SQL;他们只需输入必填字段并获取数据。

程序员观点: 可以通过SQL实现简单的数据输出,但考虑需要提取详细信息和摘要的方案。我同意它可以通过SQL完成,但考虑使用sql开发此类输出所需的时间和熟练程度的开销。我敢打赌,与水晶相比,使用sql开发这样的输出并不容易。所以我会说学习SQL和水晶,你可以选择工具来申请你的需求。

答案 2 :(得分:2)

您可以编写SQL并将其放入Crystal Report中。这两个世界中最好的,可能比拖放Crystal功能更快的性能。 报告运行时,您会看到一些响应时间延迟。

答案 3 :(得分:2)

Crystal Reports可以使用普通的SQL查询实现一些非常棘手的功能,因为Crystal Reports可以在单个公式中访问整个数据集,并且可以在运行时执行操作。

然而,除非您有一些非常疯狂的复杂Crystal Reports,否则我建议您在Excel中构建一个工具,只需将信息直接点击到新工作表中即可。

我做了这个,它让我得到了晋升,而不是开玩笑:P

我有一个自定义Excel Addin我可以给你代码基本上这样做:

  • 打开时,连接到数据库并下载连接到视图和过程的菜单选项列表
  • 将这些菜单选项添加到Excel中的新功能区选项卡
  • 单击一个时,运行视图并将整个数据集(格式正确)转储到新工作表中

此优点是您可以更新主菜单列表及其引用的每个视图,而无需对文件进行任何更改或向每个人重新发布任何内容。

答案 4 :(得分:0)

如果您想要创建具有特定布局,徽标等的文档并在其上显示一些数据,那么Crystal可能会有所帮助。从Crystal repot导出到excel并不容易 - 通常会有很多空列和行,每个报告都应该进行调整以避免这种情况。 如果你需要从SQLServer数据库导出一些数据到excel,你最好的选择将是SSIS(我猜你有SQL Server的许可证)。如果您没有SSIS许可证或者您正在使用Access数据库,那么还有一些廉价工具可以从任何数据库(不仅仅是SQLServer)检索数据并将其导出到excel。我建议你检查一下:http://www.r-tag.com。它可以运行Crystal报表和SQL报表,因此您可以立即开始使用Crystal报表,并在有时间的情况下开始将它们转换为SQL报表。两份报告都可以导出为ex​​cel。

答案 5 :(得分:0)

我通过编辑excel sql来解决这个问题,Left(Column_maxLength,250)   这解决了我的问题 在我的情况下,即使我读了250左边的字符就足够了