web-dev-qa-db-ja.com

Crystal Reportsを新しいデータベースに向ける方法

100を超えるカスタムレポートを作成したCrystal Reports 2008ユーザーがいます。レポートは、すべてのSQL Serverデータベースを照会します(SQL 2005)。
このデータベースサーバーは新しいシステムに置き換えられ(SQL 2008 R2を実行)、既存のデータベースは新しいサーバーに移動されます。新しいデータベースサーバーは別の名前になります(Crystal Reports接続を介してアドレス指定できます)が、アプリケーションの1つも同時にアップグレードされます。古いデータベース(DB_A)は履歴レポートのために新しいサーバーに復元され、新しいデータベース(DB_B)が作成されます。新しいDB_Bのスキーマは非常に似ているため、Crystal Reportsのほとんどは、新しいDB_Bでレポート定義を指定する以外はほとんど、またはまったく変更せずに新しいDB_Bに対して実行できるはずです。

もちろん、カスタム開発されたレポートの大部分は、DB_Aに対してクエリを作成します。

私の質問は、古いデータベース(DB_A)ではなく、新しいデータベース名(DB_B)を指すように既存のCrystal Reportsファイルを変更するにはどうすればよいですか?

25
JSR

[データベース]メニューと[データソースの場所の設定]メニューオプションを使用して、レポート内の各テーブルの名前または場所を変更します。

これは、データベースの場所の変更、新しいデータベースへの変更、レポートで使用されている個々のテーブルの場所または名前の変更に有効です。

データソース接続を変更するには、[データベース]メニューに移動し、[データソースの場所を設定]をクリックします。

  1. データソース接続の変更:
    1. [現在のデータソース]リスト(上部のボックス)で、変更するデータソース接続を1回クリックします。
    2. [置換]リスト(下のボックス)で、新しいデータソース接続を1回クリックします。
    3. 更新をクリックします。
  2. 個々のテーブルの変更:
    1. [現在のデータソース]リスト(上部のボックス)から、変更するデータソース接続を展開します。
    2. 場所または名前を更新するテーブルを見つけます。
    3. [置換]リスト(下部のボックス)で、新しいデータソース接続を展開します。
    4. 更新する新しいテーブルを見つけます。
    5. 更新をクリックします。
    6. テーブル名が変更されている場合、新しいテーブルを使用しているにもかかわらず、古いテーブル名がフィールドエクスプローラに表示されることに注意してください。 (これは、Set Datasource LocationのCurrent Data SourceにあるテーブルのプロパティのTable Nameで確認できます。スクリーンショット http://i.imgur.com/gzGYVTZ.png )名前を変更することができますDatabase Expert-> Selected Tablesのコンテキストメニューから古いテーブル名を新しい名前に変更します。
  3. サブレポートの変更:
    1. レポートに埋め込まれている可能性のあるサブレポートについて、上記の各手順を繰り返します。
    2. [データソースの場所の設定]ウィンドウを閉じます。
  4. コマンドまたはSQL式:
    1. [データベース]メニューに移動し、[データベースエキスパート]をクリックします。
    2. レポートデザイナーが「コマンドの追加」を使用してカスタムSQLを記述する場合、右側の[選択されたテーブル]ボックスに表示されます。
    3. そのコマンドを右クリックして、「コマンドの編集」を選択します。
    4. そのSQLが特定のデータベースを指定しているかどうかを確認してください。その場合、変更する必要があるかもしれません。
    5. データベースエキスパートウィンドウを閉じます。
    6. 右側のフィールドエクスプローラーペインで、SQL式を右クリックします。
    7. SQL式が特定のデータベースを指定しているかどうかを確認してください。もしそうなら、あなたもそれを変更する必要があるかもしれません。
    8. 編集が完了したら、式エディターウィンドウを保存して閉じます。

そして、レポートを再度実行してください。

重要なのは、最初にデータソース接続を変更し、次に更新が必要なテーブルを変更してから、他のものを変更することです。接続によって、下のテーブルが自動的に変更されることはありません。これらのテーブルは、彼らが最初に目にする大きなガチョウのような動物に刻印したゴスリングのようなものです。それらは、すべての理由とロジックをバイパスし続け、特に手動で変更しない限り、常に行っていた場所に移動します。

より便利にするためのヒントを次に示します。[データベース]メニューの[SQLクエリの表示]を使用すると、任意のテーブルのデータベースで修飾されたテーブル名( "Sales"。 "dbo"。 "Customers"など)が表示されます。特定のデータベースに直接移動します。たくさんのことを行っている場合、それは狩りをより簡単にするかもしれません。この問題に取り組んだとき、すべてのテーブルを新しいデータベースの新しいテーブルを指すように変更する必要がありました。

48
Todd Walton

データベースを選択| Set Datasource Location ...現在の接続のデータベースノード(黄色がかった円柱)を選択し、目的の接続のデータベースノードを選択し(認証が必要な場合があります)、[更新]をクリックします。

「サブレポート」ノードに対してもこれを行う必要があります。

参考までに、各テーブルを個別に選択してから、[更新]を選択して、個別のテーブルを作成することもできます。

5
craig