您的位置:首页 > 编程语言 > C#

C#给水晶报表模板传递多个自定义参数字段类模块

2010-05-24 09:29 501 查看
水晶报表类模块 CrystalRptTools

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: