Crystal reports 如何将Crystal Reports指向新数据库

Crystal reports 如何将Crystal Reports指向新数据库,crystal-reports,crystal-reports-2008,Crystal Reports,Crystal Reports 2008,我有一个Crystal Reports 2008用户,拥有100多份定制开发的报告。 该报告包含所有查询Sql Server数据库(Sql 2005)。 此数据库服务器将被新系统(运行SQL 2008 R2)替换,现有数据库将移动到新服务器。 新的数据库服务器将有一个不同的名称(我可以通过Crystal Reports连接地址), 然而,其中一个应用程序也正在同时升级。旧数据库(DB_A)将在新服务器上恢复以进行历史报告,并将创建一个新数据库(DB_B)。 新的DB_B将有一个非常相似的模式,因

我有一个Crystal Reports 2008用户,拥有100多份定制开发的报告。 该报告包含所有查询Sql Server数据库(Sql 2005)。
此数据库服务器将被新系统(运行SQL 2008 R2)替换,现有数据库将移动到新服务器。 新的数据库服务器将有一个不同的名称(我可以通过Crystal Reports连接地址), 然而,其中一个应用程序也正在同时升级。旧数据库(DB_A)将在新服务器上恢复以进行历史报告,并将创建一个新数据库(DB_B)。 新的DB_B将有一个非常相似的模式,因此我希望大多数Crystal报告都能够针对新的DB_B运行,除了将报告定义指向新的DB_B之外,几乎没有修改

当然,我的大多数用户自定义开发的报表都是针对DB_A进行查询的


我的问题是:如何修改现有的Crystal Reports文件以指向新的数据库名称(DB_B)而不是旧的数据库(DB_A)?

选择数据库|设置数据源位置。。。选择当前连接的数据库节点(黄色圆柱体),然后选择所需连接的数据库节点(您可能需要进行身份验证),然后单击更新

您还需要为“子报表”节点执行此操作

仅供参考,您也可以通过分别选择每个表,然后选择更新来执行各个表。

使用数据库菜单和“设置数据源位置”菜单选项更改报表中每个表的名称或位置

这适用于更改数据库的位置、更改为新数据库以及更改报表中使用的单个表的位置或名称

要更改数据源连接,请转到“数据库”菜单并单击“设置数据源位置”

  • 更改数据源连接:
  • 在“当前数据源”列表(顶部框)中,单击一次要更改的数据源连接
  • 在“替换为”列表(底部框)中,单击一次新数据源连接
  • 单击更新
  • 更改单个表:
  • 从当前数据源列表(顶部框)中,展开要更改的数据源连接
  • 查找要更新其位置或名称的表
  • 在“替换为”列表(底部框)中,展开新的数据源连接
  • 查找要更新到的新表
  • 单击更新
  • 请注意,如果表名已更改,则旧表名仍将显示在Field Explorer中,即使它现在正在使用新表。(您可以在Set-Datasource Location.Screenshot中查看当前数据源中表属性的表名来确认这一点)可以从Database Expert->Selected Tables中的上下文菜单将旧表名重命名为新名称
  • 更改子报告:
  • 对可能嵌入到报表中的任何子报表重复上述每个步骤
  • 关闭“设置数据源位置”窗口
  • 任何命令或SQL表达式:
  • 转到“数据库”菜单,然后单击“数据库专家”
  • 如果报表设计器使用“添加命令”编写自定义SQL,它将显示在右侧的“选定表”框中
  • 右键单击该命令并选择“编辑命令”
  • 检查SQL是否指定了特定的数据库。如果是这样,您可能需要更改它
  • 关闭数据库专家窗口
  • 在右侧的“字段管理器”窗格中,右键单击任意SQL表达式
  • 检查SQL表达式是否指定了特定的数据库。如果是这样,您可能还需要更改它
  • 完成编辑后,保存并关闭公式编辑器窗口
  • 然后再次尝试运行报告

    关键是首先更改数据源连接,然后更改任何需要更新的表,然后更改其他内容。连接不会自动更改下面的表。那些桌子就像是印在他们看到的第一只像鹅一样的大动物身上的小鹅。除非您专门手动更改它们,否则它们将继续绕过所有的原因和逻辑,转到它们一直去的地方


    为了方便起见,这里有一个提示:您可以在“数据库”菜单中“显示SQL查询”,对于直接进入特定数据库的任何表,您将看到数据库限定的表名(如“Sales”、“dbo”、“Customers”)。如果你有很多事情要做的话,这可能会让狩猎变得更容易。当我解决这个问题时,我必须更改每个表以指向新数据库中的新表。

    刚刚尝试了这个,报表仍在查询DB_A。此外,当我从数据库菜单中选择“Show SQL Query”时,它显示“从[DB_A].[dbo].[table]中选择col1,col2”。我需要它做的是“从[DB_B].[dbo].[Table]中选择col1和col2”。您使用的是本机驱动程序、ODBC还是OLEDB?我通常使用本机驱动程序。如果切换时遇到问题,我将创建一个指向正确位置的临时ODBC数据源。我将把位置设置为ODBC数据源,然后返回到具有正确模式所有者的本机驱动程序。最终解决了这个问题。。。新连接中指定的用户id似乎不能访问DB_A,以便Crystal将查询更改为从DB_B表中选择。只有这样Crystal才会更改Sql查询中的数据库名称。但是,如果您这样做,则所有新的数据源字段都将采用字符串格式。如果您在Visual Studio中工作,执行此操作后,您可能需要保存、关闭并重新打开Visual Studio。在我做了这个更新(最初效果很好)大约20分钟后,我刚刚遇到VS2010崩溃。。但当它崩溃时。。。。我得到“由于以下错误而无法加载数据集:对象引用未设置为实例o”