详解C#调用水晶报表的实现

C#调用显示水晶报表是我们开发中经常会遇到的实用需求,那么C#调用水晶报表具体的操作是什么呢?C#调用水晶报表需要注意什么以及涉及到的方法的使用情况是什么呢?下面让我们看看具体的开发实例:

C#调用水晶报表实实例演示:

 
 
 
  1. /// ﹤summary﹥ 
  2. /// CS下在C#调用水晶报表 
  3. /// 水晶报表在CrystalReport9中定义,
  4. ///数据源可以是表、视图、存储过程(最后一句必须是select语句),可以包含子报表 
  5. /// 调用实例:LoadReport
  6. ///(this.crystalReportViewer1,"D:\\66.rpt","kys","hrdb","sa","kys"); 
  7. /// 
  8. /// ﹤/summary﹥ 
  9. /// ﹤param name="ReportViewer"﹥
  10. 报表浏览器CrystalDecisions.Windows.Forms.CrystalReportViewer
  11. ﹤/param﹥ 
  12. /// ﹤param name="StrRptPaht"﹥报表文件的路径﹤/param﹥ 
  13. /// ﹤param name="StrServer"﹥服务器﹤/param﹥ 
  14. /// ﹤param name="StrDatabase"﹥数据库﹤/param﹥ 
  15. /// ﹤param name="StrUser"﹥登陆名称﹤/param﹥ 
  16. /// ﹤param name="StrPassword"﹥密码﹤/param﹥ 
  17. public void LoadReport(
  18. CrystalDecisions.Windows.Forms.CrystalReportViewer 
  19. ReportViewer,string StrRptPaht, 
  20. string StrServer, string StrDatabase, 
  21. string StrUser, string StrPassword) 
  22. string StrParaName=""; 
  23. string StrRptTableName=""; 
  24. string StrLocation=""; 
  25. ReportDocument Rpt =new ReportDocument();
  26. //表示一个报表,并且包含定义、格式化、加载、导出和打印该报表的属性和方法 
  27. SubreportObject SubRptObj;
  28. //表示放在报表中的子报表。子报表是主报表内的独立或链接的报表。 
  29. ReportDocument SubRpt; 
  30. ParameterFields ParamFields=new ParameterFields(); 
  31. ParameterField ParamField ; 
  32. ParameterDiscreteValue ParamDiscreteValue; 
  33. TableLogOnInfo LogOnInfo; 
  34. try 
  35. //C#调用水晶报表之加载报表 
  36. Rpt.Load(StrRptPaht); 
  37. //报表参数的赋值*******C#调用水晶报表** 
  38. foreach(CrystalDecisions.CrystalReports.
  39. Engine.ParameterFieldDefinition ParaFieldDef 
  40. in Rpt.DataDefinition.ParameterFields ) 
  41. //只为主报表的参数进行赋值 
  42. if(ParaFieldDef.ReportName=="") 
  43. StrParaName=ParaFieldDef.Name; 
  44. ParamField=new ParameterField(); 
  45. ParamDiscreteValue=new ParameterDiscreteValue(); 
  46. ParamField.ParameterFieldName = StrParaName; 
  47. //注:用户自定义为参数赋值!!!!!!!!!!!!!!!!!!!!!!!!! 
  48. if(StrParaName.ToLower()=="depid") 
  49. ParamDiscreteValue.Value = "dg00"; 
  50. else 
  51. ParamDiscreteValue.Value = "ky0001"; 
  52. //C#调用水晶报表 
  53. ParamField.CurrentValues.Add (ParamDiscreteValue); 
  54. ParamFields.Add (ParamField); 
  55. //C#调用显示水晶报表** 
  56. // 将参数字段集合放入查看器控件。 
  57. if(ParamFields.Count﹥0) 
  58. ReportViewer.ParameterFieldInfo = ParamFields; 
  59. //设置数据库连接参数 
  60. ConnectionInfo CnInfo = new ConnectionInfo(); 
  61. CnInfo.ServerName = StrServer; 
  62. CnInfo.DatabaseName = StrDatabase; 
  63. CnInfo.UserID = StrUser; 
  64. CnInfo.Password = StrPassword; 
  65. foreach( CrystalDecisions.CrystalReports.
  66. Engine.Table DTable in Rpt.Database.Tables) 
  67. LogOnInfo=DTable.LogOnInfo; 
  68. LogOnInfo.ConnectionInfo=CnInfo; 
  69. DTable.ApplyLogOnInfo(LogOnInfo); 
  70. //更换服务器数据库验证 
  71. StrRptTableName=DTable.Location.Substring(
  72. DTable.Location.LastIndexOf(".") + 1); 
  73. StrLocation=StrDatabase+".dbo."+StrRptTableName; 
  74. DTable.Location=StrLocation; 
  75. #region 对所有子报表更换服务器数据库验证 
  76. //获取主报表的所有子报表 
  77. foreach (ReportObject obj in Rpt.
  78. ReportDefinition.ReportObjects) 
  79. //判断是否为子报表对象 
  80. if (obj.Kind == ReportObjectKind.SubreportObject) 
  81. SubRptObj = (SubreportObject) obj; 
  82. SubRpt = Rpt.OpenSubreport(SubRptObj.SubreportName); 
  83. //读取子报表的所有数据库表 
  84. foreach (CrystalDecisions.CrystalReports.
  85. Engine.Table DTable in SubRpt.Database.Tables) 
  86. LogOnInfo = DTable.LogOnInfo; 
  87. LogOnInfo.ConnectionInfo = CnInfo; 
  88. //加载数据库连接信息 
  89. DTable.ApplyLogOnInfo(LogOnInfo); 
  90. //更换服务器和数据库 
  91. StrRptTableName=DTable.Location.Substring(
  92. DTable.Location.LastIndexOf(".") + 1); 
  93. StrLocation=StrDatabase+".dbo."+StrRptTableName; 
  94. DTable.Location=StrLocation; 
  95. #endregion 
  96. //将报表赋给报表浏览器 
  97. ReportViewer.ReportSource=Rpt; 
  98. //ReportViewer.RefreshReport(); 
  99. catch(Exception ee) 
  100. string StrMsg=ee.Source+ee.Message; 
  101. System.Windows.Forms.MessageBox.Show(StrMsg); 
  102. }

C#调用水晶报表的基本内容就向你介绍到这里,希望那个对你了解和学习C#调用水晶报表有所帮助。

网站名称:详解C#调用水晶报表的实现
本文链接:http://www.csdahua.cn/qtweb/news43/383793.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网