从Crystal Report .rpt文件中提取原始SQL查询

时间:2010-07-14 15:50:32

标签: sql crystal-reports crystal-reports-2008

我有一个.rpt文件,我没有写,也找不到任何文档。我希望能够查看从此报告生成的SQL,以便我可以弄清楚它正在提取什么数据以及使用了什么WHERE子句参数。

我可以打开它并查看报告布局。但是当我选择数据库|显示SQL查询... 时,报告会尝试连接到数据源。问题是,我使用的数据源是未知的,可能是编写查询的人使用的ODBC连接。我在那个阶段所能做的就是“取消”,我又回到了报告设计师那里。

我错过了什么吗?我可以在不连接数据源的情况下进入SQL查询吗?看起来选择标准似乎不应该依赖于数据连接。

感谢。

版本:Crystal Reports 2008

5 个答案:

答案 0 :(得分:17)

我知道这是一个旧线程,但我遇到了同样的问题。实际上,我们曾经有一个数据库/应用程序,后来被外部机构收购。

虽然他们现在拥有数据库/应用程序但他们无法访问水晶报表,因此我们不能只向他们发送我们以前运行的旧报表。同样,我们无法运行它,因为我们甚至没有在任何地方设置数据库....所以我们的计划只是提取报告生成的SQL代码并转发它。

我们遇到了同样的问题,但解决方案实际上非常简单。 如果您无权访问原始数据源,只需创建一个新的“空白”数据源(例如ODBC连接)。只要与数据源的连接有效(即它是某种有效的数据源,它就可以正常工作)。运行“显示SQL”选项时,将报告指向此数据源。只要您不尝试实际运行报表(并且只显示SQL),操作就不会失败。无论如何,这适用于我们的情况。 (Crystal Reports 2008)

(如果有任何帮助,我可以提供更多细节。)

答案 1 :(得分:6)

通过选择Database>可以找到有关现有数据源的一些细节。设置数据源位置....

除了允许您更改数据源位置之外,还应该显示有关当前数据源的一些信息,例如正在使用的数据源类型,以及可能(取决于驱动程序的类型)数据库的名称。如果(正如你猜测的那样)数据源是ODBC,那么它可能没那么有用,但是如果它使用本机驱动程序,则可能会有用。

答案 2 :(得分:5)

没有密码,我不确定你能做多少。似乎“显示SQL查询”需要先报告运行,然后生成SQL计划。

这不太理想,但你可以去数据库> Visual Linking Expert至少可以查看表以及它们的连接方式,然后转到Record Selection Formula Editor并查看自定义WHERE语句是什么。

答案 3 :(得分:3)

在Crystal Report文件中查看命令的SQL

有时您只有报告文件,但没有报告使用的关联数据库结构。 在处理您希望模仿的功能的示例报告时,这很常见。 这是一种解决方法,仅允许您在没有报表所基于的基础数据库连接时查看Crystal Report所基于的命令的SQL。 本质上,在显示SQL之前必须满足对话框,因此我们使用合法的数据源来欺骗它,而不是使用SQL命令中实际存在的SQL。

为什么报告使用命令? Crystal Reports是否能够链接表格? 当Crystal Report基于对Crystal Reports中的表链接功能而言过于复杂的记录集时,报表可以基于SQL查询,通常在另一个编辑器工具中开发/测试并粘贴到命令中。这允许使用高级SQL函数。

如果您的计算机设置中没有可以连接的数据源,则需要先建立一个数据源。

保存在简单位置的简单Microsoft Access .mdb文件就足够了。 我用路径C:\ A_test \ test.mdb放置了它,以便于查找。 如果您没有,请谷歌获取示例mdb文件并下载它,并使用您可以记住的名称和位置保存它。 (您实际上并没有真正打开过这个文件,只是连接到它。) 保存文件后,打开ODBC管理器并创建新数据源。 (您可以从“开始”>快速访问ODBC管理器;在“搜索”中键入ODBC) 在“用户DSN”选项卡上,单击“添加”按钮。 将驱动程序列表向下滚动到Microsoft Access驱动程序(* .mdb),选择它并单击“完成”按钮。 在“数据源名称”框中,键入名称(我使用的是MyTest)。 单击“选择”按钮并选择您从上一步中保存的mdb文件,然后单击“确定”。 再次单击确定。您将看到按您提供的名称列出的新数据源。单击确定。 您现在拥有了后续步骤所需的数据源。

  1. 打开要查看SQL命令的Crystal Report,然后单击Database Expert按钮或Database> Database Expert Menu。
  2. 在Selected Tables下,右键单击Command并选择View Command
  3. 出现数据源选择框。选择您创建的数据源(或您已使用的数据源),然后单击“完成”按钮。应在左窗格中使用SQL打开“视图命令”框。将SQL复制到您喜欢的文本编辑器中。

答案 4 :(得分:0)

发生的事情是,水晶报表需要一个数据库来连接,而不管它是否是原始源数据库。

创建本地数据库或使用服务器上存储的数据库,将其添加到ODBC数据源中,并在连接时使用它。成功建立连接后,您应该能够查看SQL查询而不会出现错误。