詳解C#調(diào)用水晶報(bào)表的實(shí)現(xiàn)
作者:佚名 
  針對(duì)C#調(diào)用水晶報(bào)表的開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到的問(wèn)題,我們來(lái)看看C#調(diào)用水晶報(bào)表的實(shí)現(xiàn)需要注意什么,以及具體的實(shí)現(xiàn)過(guò)程。
 C#調(diào)用顯示水晶報(bào)表是我們開(kāi)發(fā)中經(jīng)常會(huì)遇到的實(shí)用需求,那么C#調(diào)用水晶報(bào)表具體的操作是什么呢?C#調(diào)用水晶報(bào)表需要注意什么以及涉及到的方法的使用情況是什么呢?下面讓我們看看具體的開(kāi)發(fā)實(shí)例:
C#調(diào)用水晶報(bào)表實(shí)實(shí)例演示:
- /// ﹤summary﹥
 - /// CS下在C#調(diào)用水晶報(bào)表
 - /// 水晶報(bào)表在CrystalReport9中定義,
 - ///數(shù)據(jù)源可以是表、視圖、存儲(chǔ)過(guò)程(最后一句必須是select語(yǔ)句),可以包含子報(bào)表
 - /// 調(diào)用實(shí)例:LoadReport
 - ///(this.crystalReportViewer1,"D:\\66.rpt","kys","hrdb","sa","kys");
 - ///
 - /// ﹤/summary﹥
 - /// ﹤param name="ReportViewer"﹥
 - 報(bào)表瀏覽器CrystalDecisions.Windows.Forms.CrystalReportViewer
 - ﹤/param﹥
 - /// ﹤param name="StrRptPaht"﹥報(bào)表文件的路徑﹤/param﹥
 - /// ﹤param name="StrServer"﹥服務(wù)器﹤/param﹥
 - /// ﹤param name="StrDatabase"﹥數(shù)據(jù)庫(kù)﹤/param﹥
 - /// ﹤param name="StrUser"﹥登陸名稱﹤/param﹥
 - /// ﹤param name="StrPassword"﹥密碼﹤/param﹥
 - public void LoadReport(
 - CrystalDecisions.Windows.Forms.CrystalReportViewer
 - ReportViewer,string StrRptPaht,
 - string StrServer, string StrDatabase,
 - string StrUser, string StrPassword)
 - {
 - string StrParaName="";
 - string StrRptTableName="";
 - string StrLocation="";
 - ReportDocument Rpt =new ReportDocument();
 - //表示一個(gè)報(bào)表,并且包含定義、格式化、加載、導(dǎo)出和打印該報(bào)表的屬性和方法
 - SubreportObject SubRptObj;
 - //表示放在報(bào)表中的子報(bào)表。子報(bào)表是主報(bào)表內(nèi)的獨(dú)立或鏈接的報(bào)表。
 - ReportDocument SubRpt;
 - ParameterFields ParamFields=new ParameterFields();
 - ParameterField ParamField ;
 - ParameterDiscreteValue ParamDiscreteValue;
 - TableLogOnInfo LogOnInfo;
 - try
 - {
 - //C#調(diào)用水晶報(bào)表之加載報(bào)表
 - Rpt.Load(StrRptPaht);
 - //報(bào)表參數(shù)的賦值*******C#調(diào)用水晶報(bào)表**
 - foreach(CrystalDecisions.CrystalReports.
 - Engine.ParameterFieldDefinition ParaFieldDef
 - in Rpt.DataDefinition.ParameterFields )
 - {
 - //只為主報(bào)表的參數(shù)進(jìn)行賦值
 - if(ParaFieldDef.ReportName=="")
 - {
 - StrParaName=ParaFieldDef.Name;
 - ParamField=new ParameterField();
 - ParamDiscreteValue=new ParameterDiscreteValue();
 - ParamField.ParameterFieldName = StrParaName;
 - //注:用戶自定義為參數(shù)賦值!!!!!!!!!!!!!!!!!!!!!!!!!
 - if(StrParaName.ToLower()=="depid")
 - ParamDiscreteValue.Value = "dg00";
 - else
 - ParamDiscreteValue.Value = "ky0001";
 - //C#調(diào)用水晶報(bào)表
 - ParamField.CurrentValues.Add (ParamDiscreteValue);
 - ParamFields.Add (ParamField);
 - }
 - }
 - //C#調(diào)用顯示水晶報(bào)表**
 - // 將參數(shù)字段集合放入查看器控件。
 - if(ParamFields.Count﹥0)
 - ReportViewer.ParameterFieldInfo = ParamFields;
 - //設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)
 - ConnectionInfo CnInfo = new ConnectionInfo();
 - CnInfo.ServerName = StrServer;
 - CnInfo.DatabaseName = StrDatabase;
 - CnInfo.UserID = StrUser;
 - CnInfo.Password = StrPassword;
 - foreach( CrystalDecisions.CrystalReports.
 - Engine.Table DTable in Rpt.Database.Tables)
 - {
 - LogOnInfo=DTable.LogOnInfo;
 - LogOnInfo.ConnectionInfo=CnInfo;
 - DTable.ApplyLogOnInfo(LogOnInfo);
 - //更換服務(wù)器數(shù)據(jù)庫(kù)驗(yàn)證
 - StrRptTableName=DTable.Location.Substring(
 - DTable.Location.LastIndexOf(".") + 1);
 - StrLocation=StrDatabase+".dbo."+StrRptTableName;
 - DTable.Location=StrLocation;
 - }
 - #region 對(duì)所有子報(bào)表更換服務(wù)器數(shù)據(jù)庫(kù)驗(yàn)證
 - //獲取主報(bào)表的所有子報(bào)表
 - foreach (ReportObject obj in Rpt.
 - ReportDefinition.ReportObjects)
 - {
 - //判斷是否為子報(bào)表對(duì)象
 - if (obj.Kind == ReportObjectKind.SubreportObject)
 - {
 - SubRptObj = (SubreportObject) obj;
 - SubRpt = Rpt.OpenSubreport(SubRptObj.SubreportName);
 - //讀取子報(bào)表的所有數(shù)據(jù)庫(kù)表
 - foreach (CrystalDecisions.CrystalReports.
 - Engine.Table DTable in SubRpt.Database.Tables)
 - {
 - LogOnInfo = DTable.LogOnInfo;
 - LogOnInfo.ConnectionInfo = CnInfo;
 - //加載數(shù)據(jù)庫(kù)連接信息
 - DTable.ApplyLogOnInfo(LogOnInfo);
 - //更換服務(wù)器和數(shù)據(jù)庫(kù)
 - StrRptTableName=DTable.Location.Substring(
 - DTable.Location.LastIndexOf(".") + 1);
 - StrLocation=StrDatabase+".dbo."+StrRptTableName;
 - DTable.Location=StrLocation;
 - }
 - }
 - }
 - #endregion
 - //將報(bào)表賦給報(bào)表瀏覽器
 - ReportViewer.ReportSource=Rpt;
 - //ReportViewer.RefreshReport();
 - }
 - catch(Exception ee)
 - {
 - string StrMsg=ee.Source+ee.Message;
 - System.Windows.Forms.MessageBox.Show(StrMsg);
 - }
 - }
 
C#調(diào)用水晶報(bào)表的基本內(nèi)容就向你介紹到這里,希望那個(gè)對(duì)你了解和學(xué)習(xí)C#調(diào)用水晶報(bào)表有所幫助。
【編輯推薦】
責(zé)任編輯:仲衡 
                    來(lái)源:
                    CSDN
 














 
 
 
 
 
 
 