Crystal 报告 ODBC 连接:找不到数据库 table <tablename>

Crystal Reports ODBC connection: the database table <tablename> cannot be found

当 运行宁(或验证数据库)在 Crystal 报告 10 中的报告时,我收到消息:

"The database table "SomeTable" cannot be found. Proceed to remove this table from the report?"

对于多个表。

报告过去工作正常。该报告正在从多个来源获取数据,而丢失的表是那些来自与 SQL 服务器数据库的 ODBC 连接的表。我认为问题可能是在创建报告时,ODBC 指向数据库的不同实例(相同的结构,只是不同的位置。)

我已经检查过,报告用户对新数据库拥有所有必需的权限。

在 Crystal 中,如果您忽略消息,报告似乎 运行 没问题。但是,当从网站的 Crystal 报告查看器中将报告部署为 运行 时,它会抛出 File I/O error.

这个非常方便的博客 post 提供了解决方案:https://wisdomofsolomon.wordpress.com/2011/06/18/crystal-reports-tables-not-found-during-verify-database/

通过运行Show SQL Query可以看到生成的query是运行SQLlike

select * from databasename.dbo.SomeTable

似乎是 databasename 部分导致了问题(尽管据我所知,在我的例子中,旧数据库连接和新数据库连接之间的数据库名称没有任何不同一个在我的例子中。)修改 table 查询以从 SQL 中删除数据库名称解决了我的问题。

您可以按如下方式进行:

  • 转到菜单中的 Database / Set Datasource Location
  • 在报告树中向下钻取到导致问题的 table
  • Properties 下,单击 Overriden Qualified Table Name:
  • 在文本框中,键入不带数据库名称的 table 的名称(例如 dbo.SomeTable
  • 对导致问题的所有 table 执行此操作

(正如该博客 post 上的评论所指出的,您还可以创建一个 new 连接并将 table 替换为来自那个新的数据源,但是这让你从新连接中得到完全限定的 table 名称 - 所以你以后可能会再次遇到同样的问题。)

在 Crystal 中,在文件和选项以及数据库选项卡下,数据资源管理器必须选中表格。这不是一个容易了解的功能