【问题标题】:extract raw SQL query from a Crystal Report .rpt file从 Crystal Report .rpt 文件中提取原始 SQL 查询
【发布时间】:2011-03-15 22:46:53
【问题描述】:

我有一个不是我编写的 .rpt 文件,也找不到相关文档。我希望能够查看从该报告生成的 SQL,以便我可以弄清楚它提取了哪些数据以及使用了哪些 WHERE 子句参数。

我可以打开它并查看报告布局。但是当我选择 Database|Show SQL Query... 时,报告会尝试连接到数据源。问题是,我不知道正在使用的数据源,可能是编写查询的人使用的 ODBC 连接。在那个阶段我所能做的就是“取消”,然后我又回到了报表设计器上。

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

谢谢。

版本:水晶报表 2008

【问题讨论】:

  • 谢谢 - 这回答了我自己的问题 - 如何查看 SQL!

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


【解决方案1】:

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

这并不理想,但您可以转到 Database > Visual Linking Expert 至少查看表及其连接方式,然后转到 Record Selection Formula Editor 并查看自定义 WHERE 语句是什么。

【讨论】:

    【解决方案2】:

    通过选择 Database > Set Datasource Location... 应该可以找到有关现有数据源的一些详细信息。

    除了使您能够更改数据源位置外,它还应该向您显示有关当前数据源的一些信息,例如正在使用的数据源类型,以及可能(取决于驱动程序的类型)数据库的名称.如果(如您所料)数据源是 ODBC,它的帮助可能会减少,但如果它使用本机驱动程序,则可能会有一些有用的东西。

    【讨论】:

    • +1 这将是我的第一个动作。我的第二个行动是进入数据库专家(正如 LittleBobbyTables 所说)。在这两个选项之间,您应该清楚地了解数据源。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 这对我有用。在“数据库”弹出菜单上,有一个选项“每次都验证数据库”。这会搞砸你。如果它被标记,请单击它。然后再试一次。
    • 我唯一要补充的是,您创建的虚拟数据源必须是与编写原始报告的数据库相同的一般类型的数据库(MS-SQL 或其他),或者水晶会退缩。
    【解决方案4】:

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

    有时您只有报告文件,但没有报告使用的关联数据库结构。 这在处理您希望模仿的功能的示例报告时很常见。 当您没有报表所基于的基础数据库连接时,这是一种解决方法,仅允许您查看 Crystal 报表所基于的命令的 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 Driver (*.mdb),选择它并单击完成按钮。 在“数据源名称”框中,键入一个名称(我使用了 MyTest)。 单击选择按钮并选择您在上一步中保存的 mdb 文件,然后单击确定。 再次单击确定。您将看到按您提供的名称列出的新数据源。单击确定。 您现在拥有后续步骤所需的数据源。

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多