2011-11-14 40 views
22

我有一個擁有100多個自定義開發報表的Crystal Reports 2008用戶。 這些報告都查詢Sql Server數據庫(SQL 2005)。
此數據庫服務器正在被新系統(運行SQL 2008 R2)替換,現有數據庫將被移至新服務器。 新的數據庫服務器將具有不同的名稱(我可以通過Crystal Reports連接尋址),但是,其中一個應用程序也將同時升級。舊數據庫(DB_A)將在新服務器上恢復以進行歷史報告,並創建一個新數據庫(DB_B)。 新的DB_B將有一個非常類似的模式,所以我期望大多數Crystal Reports應該能夠針對新的DB_B運行,除了在新的DB_B上指向報告定義之外,幾乎不需要修改或不進行任何修改。如何將Crystal Reports指向新數據庫

當然,我的大部分用戶定製開發了針對DB_A的報表查詢。

我的問題是:如何修改現有的Crystal Reports文件以指向新數據庫名稱(DB_B)而不是舊數據庫(DB_A)?

+0

答案本來應該是用前一個數據庫恢復到使用不同名稱的新數據庫。然後,新數據庫應該使用所有報告使用的相同數據庫。如果模式不同,只需編輯架構不同的報告,而不是數據源位置。 – Sun

回答

4

選擇數據庫|設置數據源位置...選擇當前連接的數據庫節點(黃色柱面),然後選擇所需連接的數據庫節點(您可能需要驗證),然後單擊更新。

您還需要爲'Subreports'節點執行此操作。您可以單獨選擇每個表格,然後選擇「更新」。

+1

剛試過這個,報告仍在查詢DB_A。另外,當我從數據庫菜單中選擇「顯示SQL查詢」時,它顯示「SELECT col1,col2 FROM [DB_A]。[dbo]。[Table]」。我需要的是「SELECT col1,col2 FROM [DB_B]。[dbo]。[Table]」 – JSR

+0

您是使用本機驅動程序,ODBC還是OLEDB? – craig

+0

我通常使用本地驅動程序。如果我遇到切換問題,我將創建一個指向正確位置的臨時ODBC數據源。我將該位置設置爲ODBC數據源,然後使用正確的模式所有者返回到本機驅動程序。 – craig

44

使用數據庫菜單和「設置數據源位置」菜單選項來更改報表中每個表的名稱或位置。

這適用於更改數據庫的位置,更改爲新數據庫以及更改報表中使用的單個表的位置或名稱。

要更改數據源連接,請轉到數據庫菜單並單擊設置數據源位置。

  1. 更改數據源連接:
    1. 從當前數據源列表(機頂盒),單擊一次要更改數據源連接。
    2. 在Replace with列表(底部框)中,單擊新的數據源連接。
    3. 點擊更新。
  2. 更改單個表:
  3. 從當前數據源列表(機頂盒),展開您要更改數據源的連接。
  4. 找到您要更新其位置或名稱的表格。
  5. 在「替換爲」列表(底部框)中,展開新的數據源連接。
  6. 找到您要更新指向的新表。
  7. 點擊更新。
  8. 請注意,如果表名已更改,舊的表名仍將顯示在字段資源管理器中,即使它現在使用新表。(您可以確認這是查看當前數據源中表格屬性的設置數據源位置中的表格名稱,屏幕截圖http://i.imgur.com/gzGYVTZ.png)可以在數據庫專家 - >選定表格中的上下文菜單中將舊錶格名稱重命名爲新名稱。
  • 更改子報表: 每一個你可能已經嵌入到您的報告中的任何子報表上面的步驟
  • 重複。
  • 關閉設置數據源位置窗口。
  • 任何命令或SQL表達式:
  • 轉到數據庫菜單並點擊數據庫專家。
  • 如果報表設計器使用「添加命令」編寫自定義SQL,它將顯示在右側的選定表格框中。
  • 右鍵單擊該命令並選擇「編輯命令」。
  • 檢查SQL是否指定了特定的數據庫。如果是這樣,你可能需要改變它。
  • 關閉數據庫專家窗口。
  • 在右側的字段資源管理器窗格中,右鍵單擊任何SQL表達式。
  • 檢查SQL表達式是否指定了特定的數據庫。如果是這樣,您可能還需要更改它。
  • 完成編輯後保存並關閉公式編輯器窗口。
  • 並嘗試再次運行報告。

    關鍵是先更改數據源連接,然後更改任何需要更新的表,然後更改其他的東西。連接不會自動更改下面的表格。那些桌子就像印在他們看到的第一隻大鵝般的動物身上的雛鵝。他們會繼續繞過所有的理由和邏輯,然後去到他們一直走的地方,除非你專門手動改變它們。您可以在「數據庫」菜單中「顯示SQL查詢」,您將看到有數據庫限定的表名(如「Sales」。「dbo」)。「Customers」 )用於任何直接到特定數據庫的表。如果你有很多事情正在進行,這可能會使狩獵更容易。當我解決這個問題時,我不得不改變每一個表來指向新數據庫中的新表。

    +0

    +1。你救了我幾個小時的工作! –

    +0

    ,但是如果您這樣做,那麼所有新的數據源字段將採用字符串格式 –

    +0

    如果您在Visual Studio中工作,則在執行此操作後,可能需要保存,關閉並重新打開Visual Studio。我剛剛做了這個更新(最初工作很好)大約20分鐘後VS2010崩潰..但是當它崩潰....我得到了「由於以下錯誤加載數據集失敗:對象引用未設置爲一個東西。」可能根本不相關...但它可能會節省一些痛苦......我允許VS第一次自動重新打開......也許不是一個好主意......我可能會更好地關閉VS,手動重新打開... –