好吧,我正在爲我工作的公司構建一種報告中心,而且很容易的部分是構建基於Web的文件瀏覽器,現在我正在討論它的報告方面,要開始它,我正在整合Crystal Reports。 我已經從他們的SAP網站獲得了文件,但我遇到了一些問題,首先,我發現的所有示例都使其必須定義數據源/數據庫,並在代碼中包含登錄信息。這是一個問題,因爲我們有很多水晶報告,有很多不同的數據庫引用,所以我不能只用一個。實際上,有報道稱我們同時使用該參考多個數據庫。MVC中的水晶報告
其次,我發現的所有例子看起來像你必須爲每個報告創建一個特定的頁面。我的目標是能夠將報告鏈接作爲變量,併爲我們所有的報告提供一個頁面。
我看了昨天能找到的所有東西,但找不到我需要的東西。我也想知道ReportClass.Load函數到底是什麼。在我能找到的每一個例子中,我都沒有注意到當我使用它時在ReportClass中有任何明顯的區別。
在搜索時,我找到了一個答案,建議構建一個Web窗體應用程序來構建報表,然後使用I-Frame來抓取它,但這是我想避免的。
因此,在回顧:
1)我需要建立水晶報表,而不必引用數據庫
2)我需要它通過提供公正的路徑,將以靈活可變的報告。 RPT文件
3)我想它是在一個單一的應用程序,在MVC,並避免的IFrame
非常感謝你的幫助!
編輯:我找到了適合我的解決方案。我沒有使用RAZOR視圖,而是使用了一個ASPX視圖,該視圖在工具箱中具有Crystal Reports Viewer工具。爲了使它可變,我使用了ViewBag。
控制器代碼:
[HttpGet]
public ActionResult Viewer(string Path)
{
var sessionID = Session.SessionID;
ViewBag.Path = newPath;
return View();
}
ASPX查看代碼:
<% Report.Report.FileName = ViewBag.Path; %>
<CR:CrystalReportViewer ID="Viewer" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" Height="100%" ReportSourceID="Report" ToolPanelWidth="200px" Width="100%" />
<CR:CrystalReportSource ID="Report" runat="server">
<Report></Report>
</CR:CrystalReportSource>
我很想,從現在開始這可能是一個很好的解決方案,事實上,我計劃在最終項目中添加SSRS報告以及Excel報告的功能,但我們已經完成了幾百個Crystal Reports ,我只是爲他們製作觀衆。嘗試重做它們會花費太長時間。現在我們正在更多地轉向SSRS報告,但我們仍然需要我們已經在Crystal中使用的絕大多數報告。並感謝您的幫助! – 2012-01-04 17:51:58
是的,我忽略了你的帖子關於現有報告的部分,所以我刪除了我的評論:) – HardCode 2012-01-04 17:56:23
我不知道關於點2和3,但點1不可能在Crystal,SSRS或其他任何其他我知道報告設計師 - 如果您無法確定這些字段是什麼,您應該如何爲報告添加字段? (您應該能夠*修改*現有報告的佈局而不訪問數據庫,但不能從頭開始構建它們。) – 2012-01-05 08:15:28