主报表 数据源是部门表 字段:OrganID、OrganName.[字段在报表中显示]
子报表 数据源 员工工资相关表 字段:EmpID、EmpName、OrganID、OrganName、PayMoney1、PayMoney2、PayMoney3;[字段在报表中显示]
关联连接 字段为:OrganID
-----------------------------------------------
/// <summary>
/// 获得 水晶报表
/// 有子报表
/// qsping 2007-08-23
/// </summary>
/// <param name="strPath">水晶报表 绝对路径</param>
/// <param name="dtCrystalReport">父水晶报表 数据源</param>
/// <param name="dtSonCrystalReport">子水晶报表 数据源</param>
/// <param name="strTextObject">TextObject控件名 用“,” 隔开</param>
/// <param name="strText">TextObject控件值 用“,” 隔开</param>
public void GetCrystalReport(string strPath, DataTable dtCrystalReport, DataTable dtSubCrystalReport, string strSubReportName, string strTextObject, string strText)
{
ReportDocument Report = new ReportDocument();
this.SetCrystalReportPath(Report, strPath);
this.SetGlobalsReport(Report);
this.SetCrystalReportTextObject(Report, this.GetArrStr(strTextObject), this.GetArrStr(strText));
try
{
Report.SetDataSource(dtCrystalReport);
ReportDocument subReport = Report.Subreports[strSubReportName];
subReport.SetDataSource(dtSubCrystalReport);
}
catch
{
MessageBox.Show("数据加载出错,请联系系统管理员!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.ReportViewer.ReportSource = Report;
}
----------------------------------------
参考:
程序代码
public partial class DocumentPrint : Form
{
public DocumentPrint(List<ServiceDocumentsInfo> serviceDocInfo, List<StuffInfo> stuffList, List<ManhourInfo> manhourList)
{
InitializeComponent();
//维修单主报表
ReportDocument rdDoc = new ReportDocument();
rdDoc.Load("ServiceDocumentRPT.rpt");
rdDoc.SetDataSource(serviceDocInfo);
//材料子报表
ReportDocument rdStuff = rdDoc.Subreports["StuffRPT.rpt"];
rdStuff.SetDataSource(stuffList);
//工时子报表
ReportDocument rdManhour = rdDoc.Subreports["ManhourRPT.rpt"];
rdManhour.SetDataSource(manhourList);
crystalReportViewer1.ReportSource = rdDoc;
}
}
子报表 数据源 员工工资相关表 字段:EmpID、EmpName、OrganID、OrganName、PayMoney1、PayMoney2、PayMoney3;[字段在报表中显示]
关联连接 字段为:OrganID
-----------------------------------------------
/// <summary>
/// 获得 水晶报表
/// 有子报表
/// qsping 2007-08-23
/// </summary>
/// <param name="strPath">水晶报表 绝对路径</param>
/// <param name="dtCrystalReport">父水晶报表 数据源</param>
/// <param name="dtSonCrystalReport">子水晶报表 数据源</param>
/// <param name="strTextObject">TextObject控件名 用“,” 隔开</param>
/// <param name="strText">TextObject控件值 用“,” 隔开</param>
public void GetCrystalReport(string strPath, DataTable dtCrystalReport, DataTable dtSubCrystalReport, string strSubReportName, string strTextObject, string strText)
{
ReportDocument Report = new ReportDocument();
this.SetCrystalReportPath(Report, strPath);
this.SetGlobalsReport(Report);
this.SetCrystalReportTextObject(Report, this.GetArrStr(strTextObject), this.GetArrStr(strText));
try
{
Report.SetDataSource(dtCrystalReport);
ReportDocument subReport = Report.Subreports[strSubReportName];
subReport.SetDataSource(dtSubCrystalReport);
}
catch
{
MessageBox.Show("数据加载出错,请联系系统管理员!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.ReportViewer.ReportSource = Report;
}
----------------------------------------
参考:
程序代码
public partial class DocumentPrint : Form
{
public DocumentPrint(List<ServiceDocumentsInfo> serviceDocInfo, List<StuffInfo> stuffList, List<ManhourInfo> manhourList)
{
InitializeComponent();
//维修单主报表
ReportDocument rdDoc = new ReportDocument();
rdDoc.Load("ServiceDocumentRPT.rpt");
rdDoc.SetDataSource(serviceDocInfo);
//材料子报表
ReportDocument rdStuff = rdDoc.Subreports["StuffRPT.rpt"];
rdStuff.SetDataSource(stuffList);
//工时子报表
ReportDocument rdManhour = rdDoc.Subreports["ManhourRPT.rpt"];
rdManhour.SetDataSource(manhourList);
crystalReportViewer1.ReportSource = rdDoc;
}
}
1200





