我有一个.rpt文件,我没有写,也找不到任何文档。我希望能够查看从此报告生成的SQL,以便我可以弄清楚它正在提取什么数据以及使用了什么WHERE子句参数。
我可以打开它并查看报告布局。但是当我选择数据库|显示SQL查询... 时,报告会尝试连接到数据源。问题是,我使用的数据源是未知的,可能是编写查询的人使用的ODBC连接。我在那个阶段所能做的就是“取消”,我又回到了报告设计师那里。
我错过了什么吗?我可以在不连接数据源的情况下进入SQL查询吗?看起来选择标准似乎不应该依赖于数据连接。
感谢。
版本:Crystal Reports 2008
答案 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文件,然后单击“确定”。 再次单击确定。您将看到按您提供的名称列出的新数据源。单击确定。 您现在拥有了后续步骤所需的数据源。
答案 4 :(得分:0)
发生的事情是,水晶报表需要一个数据库来连接,而不管它是否是原始源数据库。
创建本地数据库或使用服务器上存储的数据库,将其添加到ODBC数据源中,并在连接时使用它。成功建立连接后,您应该能够查看SQL查询而不会出现错误。