1. 程式人生 > 其它 >DevExpress如何建立主從報表

DevExpress如何建立主從報表

1、新建XtraReport

  • 右鍵Insert Detail Report
  • 結構如下圖

2、建立資料來源

private DataSet GetData()
{
	DataSet ds = new DataSet();
	string sqlMaster = $"select t.presc_date,t.presc_no, t.name,t.sex ,t.charge_type,t.costs from drug_presc_master t where t.presc_date between to_date('2019-08-17','yyyy-MM-dd') and to_date('2019-08-18','yyyy-MM-dd')";
	DataTable dtMaster = DbHelperOracle.Query(sqlMaster).Tables[0];
	dtMaster.TableName = "Master";
	string sqlDetal = $"select t.presc_date,t.presc_no, t.drug_name,t.drug_spec,t.firm_id,t.administration,t.item_no ,t.quantity,t.costs from drug_presc_detail t where t.presc_date between to_date('2019-08-17','yyyy-MM-dd') and to_date('2019-08-18','yyyy-MM-dd')";
	DataTable dtDetail = DbHelperOracle.Query(sqlDetal).Tables[0];
	dtMaster.TableName = "Master";
	dtDetail.TableName = "Detail";
	ds.Tables.Add(dtMaster.Copy());
	ds.Tables.Add(dtDetail.Copy());

	// 給資料集建立主從關係
	DataColumn masterColumnDate = ds.Tables["Master"].Columns["presc_date"];
	DataColumn masterColumnNo = ds.Tables["Master"].Columns["presc_no"];

	DataColumn detailColumnDate = ds.Tables["Detail"].Columns["presc_date"];
	DataColumn detailColumnNo = ds.Tables["Detail"].Columns["presc_no"];
	DataColumn[] dcMaster = new DataColumn[] { masterColumnDate, masterColumnNo };
	DataColumn[] dcDetail = new DataColumn[] { detailColumnDate, detailColumnNo };
	DataRelation relDate = new DataRelation("relationCol", dcMaster, dcDetail);

	ds.Relations.Add(relDate);
	return ds;
}

3、給報表設定資料來源

public XtraReport1()
{
	InitializeComponent();
	DataSet ds = GetData();
	// 繫結主表
	this.DataSource = ds;
	this.DataMember = "Master";

	// 制定從表成員
	DetailReport.DataMember = "relationCol";
	// 繫結從表
	DetailReport.DataSource = ds;
}

4、列印預覽

private void BtnPrint_Click(object sender, EventArgs e)
{            
	// 列印預覽
	ReportPrintTool tool = new ReportPrintTool(new XtraReport1());
	tool.ShowPreviewDialog();
}