我可能回答太晚沒有任何機會在賞金,但我會提供一個答案無論如何。
如果您直接運行Crystal Report或使用Crystal Enterprise運行,那麼我可以想到的唯一方法就是使用dsn作爲paulmorriss提及。這樣做的缺點是你會使用ODBC,我認爲它通常比較慢並且被認爲是過時的。
如果您在應用程序中使用它,那麼您可以簡單地更改代碼中的數據庫連接設置。然後,每個人都可以根據自己的測試數據庫開發報告,並且可以在運行時將其指向生產數據庫(假定開發人員數據庫是最新的並且包含與生產數據庫相同的字段)。
要做到這一點,你應該能夠使用的功能如下所示:
private void SetDBLogonForReport(CrystalDecisions.Shared.ConnectionInfo connectionInfo, CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument)
{
CrystalDecisions.CrystalReports.Engine.Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
對於這個工作,你需要在ConnectionInfo對象傳遞(其中將包含所有的登錄信息)和報告文件以應用於。希望這可以幫助。
編輯 - 另一個選擇,我不敢相信我到現在還沒有想過,如果你使用SQL Server,你可以確保所有的開發數據庫名稱是相同的,那麼使用 」。」或「(本地)」作爲服務器和集成安全性,以便每個人在本地有效地擁有相同的連接信息。我認爲這可能是假設您可以讓所有開發人員使用相同設置的最佳方式。
再次編輯:) 閱讀了其他答案的一些評論後,我想我可能誤解了這個問題。沒有理由可以想到,爲什麼你無法在沒有編輯報告的權限之外執行阿沃答案中的步驟,但我假設你已經能夠做出其他更改,所以我懷疑是不是。我認爲要讓報告適用於您一直在執行這些步驟的每位開發人員。
+1好問題,大多數人只是通過戰鬥,而不是花時間找出一個好的解決方案。 – Dusty 2009-09-01 21:47:53