DevExpress如何建立主從報表
阿新 • • 發佈:2022-05-09
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(); }