如何在新数据库中指向Crystal Reports

时间:2011-11-14 21:49:22

标签: crystal-reports crystal-reports-2008

我有一个Crystal Reports 2008用户,该用户拥有100多个自定义开发的报告。 报告全部查询Sql Server数据库(SQL 2005) 此数据库服务器将替换为新系统(运行SQL 2008 R2),现有数据库将移至新服务器。 新数据库服务器将具有不同的名称(我可以通过Crystal Reports Connections解决), 但是,其中一个应用程序也在同时升级。旧数据库(DB_A)将在新服务器上恢复以进行历史报告,并将创建新数据库(DB_B)。 新的DB_B将具有非常相似的模式,因此我希望大多数Crystal Reports应该能够针对新的DB_B运行,除了将报告定义指向新的DB_B之外,几乎没有修改。

当然,我的大多数用户自定义开发了针对DB_A的报告查询。

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

2 个答案:

答案 0 :(得分:48)

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

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

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

  1. 更改数据源连接:
    1. 从“当前数据源”列表(顶部框)中,单击要更改的数据源连接。
    2. 在替换为列表(底部框)中,单击新数据源连接。
    3. 点击更新。
  2. 更改个别表格:
    1. 从“当前数据源”列表(顶部框)中,展开要更改的数据源连接。
    2. 找到要更新其位置或名称的表格。
    3. 在替换为列表(底部框)中,展开新的数据源连接。
    4. 找到要更新的新表以指向。
    5. 点击更新。
    6. 请注意,如果表名已更改,则旧表名仍将显示在“字段资源管理器”中,即使它现在正在使用新表。 (您可以确认这是在设置数据源位置中查看当前数据源中表的属性的表名。屏幕截图http://i.imgur.com/gzGYVTZ.png)可以从数据库专家的上下文菜单中将旧表名重命名为新名称 - >精选表格。
  3. 更改子报告:
    1. 对报表中可能嵌入的所有子报表重复上述每个步骤。
    2. 关闭“设置数据源位置”窗口。
  4. 任何命令或SQL表达式:
    1. 转到“数据库”菜单,然后单击“数据库专家”。
    2. 如果报表设计器使用“Add Command”编写自定义SQL,它将显示在右侧的Selected Tables框中。
    3. 右键单击该命令,然后选择“编辑命令”。
    4. 检查SQL是否指定了特定的数据库。如果是这样,您可能需要更改它。
    5. 关闭“数据库专家”窗口。
    6. 在右侧的“字段资源管理器”窗格中,右键单击任何SQL表达式。
    7. 检查SQL表达式是否指定了特定的数据库。如果是这样,您可能还需要更改它。
    8. 完成编辑后,保存并关闭“公式编辑器”窗口。
  5. 然后再次尝试运行报告。

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

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

答案 1 :(得分:5)

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

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

仅供参考,您也可以单独选择每个表格,然后选择更新。