關於vs2010下水晶報表的使用入門


關於vs2010下使用水晶報表了解情況記錄如下:

1.首先vs2010不再自帶水晶報表控件了,需要下載安裝vs2010配套的水晶報表控件:CRforVS_13_0。這個控件安裝很簡單,基本上都選擇默認設置就可以了。

2.安裝之后,再在vs2010中添加新項,選中reporting,下面就有CrystalReports的選項了,這個就是水晶報表文件。

3.新建一個CrystalReports文件,vs2010會彈出一個水晶報表模版生成向導,可以根據向導指示,一步一步的生成自己需要的報表文件。這里我選擇了標准模式。

4.根據向導的數據庫連接提示,我選擇了oracle服務器連接,使水晶報表與數據庫連接起來,只需要按要求輸入服務名,用戶和密碼,水晶報表模版就會自己連接上oracle。

5.然后選擇需要的表或者視圖,並選擇相應的字段,(我跳過了后面的分組和過濾字段的設置),然后選擇報表樣式,水晶報表就會為你自動生成一個默認的模版。

 

你可以在此模版上進一步進行樣式的優化調整,包括增加合並,求和等等高級操作。

6.至此,模版制作完成,現在開始寫代碼。

新建一個webform窗體,並在工具箱中選擇報表設計,拖放一個CrystalReportViewer控件到頁面上,這個就是水晶報表的web控件,有了它就可以輕松實現很多復雜的功能了。

7.可以根據自己的需求通過控制該控件的屬性來控制控件的顯示效果。

如:

HasPrintButton="False" //不顯示打印功能按鈕

HasCrystalLogo="False" //不顯示水晶報表logo

HasDrilldownTabs="False" //不顯示下載按鈕

HasDrillUpButton="False" //不顯示上傳按鈕

HasGotoPageButton="False" //不顯示轉跳按鈕

ToolPanelView="None" //不顯示工具欄

HasToggleGroupTreeButton="false" // 不顯示水晶報表樹按鈕。

8.那么如何讓這個水晶報表在頁面上跑起來呢?下面是相關的代碼

首先需要說明的是,水晶報表和眾多報表控件一樣有pull模式和push模式的區別。所謂的pull模式就是在模版中指定數據源,並通過模版直接取得數據並顯示到控件上的模式,也是我正在使用的模式。push模式,是自己在程序中組織數據源,並推送給水晶報表模版,顯示在控件上的模式,屬於高級應用,更強大更靈活,當然自己也需要寫更多的代碼。

今天這里主要將簡單好用的pull模式。

首先,初始化水晶報表類並裝載好需要的模版。

1 //找到水晶報表模版,我的水晶報表是放在web系統根目錄下的WebReport文件夾中的,
2 string MasterplateName = "test.rpt";
3 string reportPath = Server.MapPath(Request.ApplicationPath + "/WebReport/" + MasterplateName);
4 ReportDocument myReport = new ReportDocument();
5 myReport.Load(reportPath);

接下來,需要重新為模版的數據庫連接指定連接串防止,水晶報表連接不到數據庫

//定義水晶報表的數據庫連接信息 
ConnectionInfo connectionInfo = new ConnectionInfo();
//取到webconfig中的連接串
string sOracleCon = System.Configuration.ConfigurationManager.AppSettings["connectionString"].TrimEnd(';');
//處理得到數據源,用戶和密碼
string[] listOracleCon = new string[3];
string[] listOracleConTemp1 = sOracleCon.Split(';');
for (int i = 0; i < listOracleConTemp1.Length; i++)
{
      string[] listOracleConTemp2 = listOracleConTemp1[i].Split('=');
      listOracleCon.SetValue(listOracleConTemp2[1], i);
}
 //數據庫名或數據庫服務
connectionInfo.DatabaseName = listOracleCon[0];
 //用戶名
connectionInfo.UserID = listOracleCon[1];
//用戶密碼
 connectionInfo.Password = listOracleCon[2];
//數據庫地址,oracle數據庫不需要設置
//connectionInfo.ServerName = "localhost";
//將數據庫信息傳遞給報表 
 SetDBLogonForReport(connectionInfo, myReport);
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
     Tables tables = reportDocument.Database.Tables;
      foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
     {
         TableLogOnInfo tableLogonInfo = table.LogOnInfo;
         tableLogonInfo.ConnectionInfo = connectionInfo;
         table.ApplyLogOnInfo(tableLogonInfo);
      }
} 

最后,將水晶報表對象賦給頁面模版

//把模板對象賦給報表前端呈現控件CrystalReportViewer1          
CrystalReportViewer.ReportSource = myReport;

完成之后,編譯,就可以在頁面上看到效果了,非常的方便和快捷。

最后自己再記錄一下,push模式,需要自己先通過代碼連接數據庫,並生成dataset,再傳給水晶報表類,並賦給模版。以便后面的自學。

DataSet ds = new DataSet();
ReportDocument myReport = new ReportDocument();
myReport.SetDataSource(ds); 
CrystalReportViewer.ReportSource = myReport;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM