C#给水晶报表模板传递多个自定义参数字段类模块
2010-05-24 09:29
501 查看
水晶报表类模块 CrystalRptTools
调用类模块的例子代码:
作者:段利庆 QQ:14035344
一卡通水电暖专家: http://www.duanliqing.kudo.cn
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using CSarp_DB_Sample.数据访问层; using System.Data; using CrystalDecisions.CrystalReports.Engine; using CSarp_DB_Sample.CrystalRpt; namespace CSarp_DB_Sample { class CrystalRptTools { //'*报表【*.rpt】文件的路径 string _sRptPath ; public string sRptPath { get { return _sRptPath; } set { _sRptPath = value; } } //'*查询字符串 string _strSQL ; public string strSQL { get { return _strSQL; } set { _strSQL = value; } } //'*窗体上放置的用于显示报表的【CrystalReportViewer】控件 public CrystalDecisions.Windows.Forms.CrystalReportViewer CrystalReportViewerFrm ; //''*------------------------------------------------------ //''*参数字段的名称 //''*如果无参数字段,此值为空字符串 //'Public sParamFieldName As String //''*参数字段的值 字符串 //''*如果无参数字段,此值为空字符串 //'Public sPara As String //''*------------------------------------------------------ //'*水晶报表的参数集合 private CrystalDecisions.Shared.ParameterFields ParamFields = new CrystalDecisions.Shared.ParameterFields(); public void AddCrystalPara(string sParamFieldName , string spara ) //'' ========================================================== //' 开发人员:段利庆 //' 编写时间:09-08-14 //' 函数名称:SetCrystalPara //' 参数说明:sParamFieldName 参数字段的名称 //' sPara 参数字段值 //' 功能说明:添加水晶报表的【参数字段值】到参数集合中 //' 其他说明:这里可以在报表中设置多个参数字段 //'' ========================================================== { CrystalDecisions.Shared.ParameterField ParamField = new CrystalDecisions.Shared.ParameterField(); CrystalDecisions.Shared.ParameterDiscreteValue discreteVal = new CrystalDecisions.Shared.ParameterDiscreteValue(); //'*设置参数字段的名称,该名称必须与报表中的参数相符 //'*否则不会引起替代的效果 ParamField.Name = sParamFieldName; //'*设置数值并将它设置给参数字段对象 discreteVal.Value = spara; ParamField.CurrentValues.Add(discreteVal); //'*加入该参数字段对象至参数字段对象集合 ParamFields.Add(ParamField); } public void SetCrystalRptPara() { //'*设置参数字段对象集合至查看器控件 CrystalReportViewerFrm.ParameterFieldInfo = ParamFields; } public void FullCrystalRptPara(ref ReportDocument MyCrystalReport) //'' ========================================================== //' 开发人员:段利庆 //' 编写时间:09-08-14 //' 函数名称:FullCrystalRptPara //' 参数说明:MyCrystalReport 引用一个【例:CstlRptPara.rpt】类的实例 //' //' 功能说明:将数据表显示到【CrystalReportViewer】 //' 其他说明:1.创建报表文件【CstlRptPara.rpt】 //' 2.可以采用ADO连接来设计报表的样式,{DataTable}的格式相同就可以 //'' ========================================================== { try { //'*1:设置报表文件的路径 MyCrystalReport.OpenSubreport(sRptPath); } catch ( Exception ex ) { MessageBox.Show(ex.Message.ToString()); return ; } //'*定义这个进为获得数据表对象【DataTable】内的数据 DBLog objData = new DBLog(); long RctCount = 0 ; DataTable tTable = objData.ExecuteSQL (strSQL,out RctCount); try { //'*2:载入数据 MyCrystalReport.SetDataSource(tTable); } catch ( Exception ex ) { MessageBox.Show(ex.Message.ToString()); return ; } } public void ShowCrstalRpt(ref ReportDocument MyCrystalReport) //'' ========================================================== //' 开发人员:段利庆 //' 编写时间:09-08-14 //' 函数名称:ShowCrstalRpt //' 参数说明:MyCrystalReport 引用一个【CstlRptPara.rpt】类的实例 //' //' 功能说明:将数据表显示到【CrystalReportViewer】 //'' ========================================================== { CrystalReportViewerFrm.ReportSource = MyCrystalReport; } } }
调用类模块的例子代码:
private void Button5_Click(object sender, EventArgs e) { CrystalRptTools objCrystalRpt = new CrystalRptTools(); objCrystalRpt.CrystalReportViewerFrm = crystalReportViewer1; objCrystalRpt.sRptPath = Application.StartupPath + @"/CstRpt/CrystalReportToosTest.rpt"; //'*声明报表文件的对象 CrystalReportToosTest MyCrystalReport = new CrystalReportToosTest(); objCrystalRpt.strSQL = "SELECT 编号 as _ ,名称,单价,备注,删除 " + "FROM 计量仪表_价格 " + "WHERE 删除 = 0 " + "ORDER BY 编号 "; ReportDocument rep = new ReportDocument(); //报表格式文件类 显示的装换 rep = (ReportDocument)MyCrystalReport; // '*载入数据库数据 objCrystalRpt.FullCrystalRptPara(ref rep ); //'*参数字段的名称 string sParamFieldName = ""; //'*参数字段的值 字符串 string sPara =""; //'*-------------------------------------------------------------- //'*增加参数字段 //'*有N个参数字段 就处理N个次 sParamFieldName = "报表抬头"; sPara = TextBox1.Text; objCrystalRpt.AddCrystalPara(sParamFieldName, sPara); sParamFieldName = "报表抬头1"; sPara = TextBox1.Text; objCrystalRpt.AddCrystalPara(sParamFieldName, sPara); //'*-------------------------------------------------------------- objCrystalRpt.SetCrystalRptPara(); // '*显示报表内容 objCrystalRpt.ShowCrstalRpt(ref rep); }
作者:段利庆 QQ:14035344
一卡通水电暖专家: http://www.duanliqing.kudo.cn
相关文章推荐
- C#中水晶报表实现动态传递参数的简单方法
- Code19 使用C#实现如何在运行时传递参数给水晶报表
- 水晶报表自定义参数传递个人示例代码
- 水晶报表使用Push Model模式传递参数
- 水晶报表传递时间参数报错的解决方案
- 水晶报表传递参数
- VS.Net中向报表模板中传递参数与公式
- 在水晶报表中实现任意选择指定字段显示-模板及C#升级版
- 水晶报表传递参数及使用公式参数
- 水晶报表向参数字段传递参数
- C#下水晶报表打印自定义纸张
- 向水晶报表传递参数
- 完成了对水晶报表中的参数传递的学习
- 水晶报表传递参数
- 水晶报表参数传递代码 同时 可以翻页
- 向水晶报表传递参数
- 2004.12.8 水晶报表传递参数
- 使用VS.NET向水晶报表中的存储过程传递参数
- VS.Net中向报表模板中传递参数与公式
- [转贴]向水晶报表传递参数