public void ExecutePreview() { this.Hide(); DataSet ds = new DataSet(); ds.Tables.Add(new bllUser().GetUsers().Copy());//取报表数据 _report = new TfrxReportClass(); _report.OnBeforePrint += new IfrxReportEventDispatcher_OnBeforePrintEventHandler(Report_OnBeforePrint); _report.OnAfterPrint += new IfrxReportEventDispatcher_OnAfterPrintEventHandler(Report_OnAfterPrint); ds.Tables[0].TableName = "User"; //设置表名,与FastReport报表内名称定义一致 dtSummary = new FrxDataTable(ds.Tables[0]); //创建报表代理数据 _report.MainWindowHandle = (int)this.Handle; //设置报表窗体的主窗体 _report.LoadReportFromFile(GetReportFile("users.fr3")); //加载报表文件 _report.ClearDatasets(); //先清空报表数据 dtSummary.AssignToReport(true, _report); //设置报表的主数据源 dtSummary.AssignToDataBand("MasterData1", _report); //绑定主表的报表数据 frmPrintViewerFR.ExecutePreview(this, _report); //显示打印预览窗体 this.Close(); //预览或打印完成关闭本窗体 }
//准备报表数据 private void PrepareReport() { //取报表数据 DataSet ds = new bllSO().GetReportData(txtNoFrom.Text, txtNoTo.Text, txtDateFrom.DateTime, txtDateTo.DateTime); //报表实例 _report = new TfrxReportClass(); _report.OnBeforePrint += new IfrxReportEventDispatcher_OnBeforePrintEventHandler(Report_OnBeforePrint); _report.OnAfterPrint += new IfrxReportEventDispatcher_OnAfterPrintEventHandler(Report_OnAfterPrint); ds.Tables[0].TableName = "M"; //Master 主表 ds.Tables[1].TableName = "D"; //Detail 明细 dtSummary = new FrxDataTable(ds.Tables[0]); //创建主表的报表代理数据 dtDetailView = new FrxDataView(ds.Tables[1], "D"); //创建明细表的报表代理数据 //主从表数据需要绑定3个事件, 取主表的主键用于过滤明细数据 dtSummary.FrxEventOnFirst += new FrxOnFirst(OnGetValueHandler); //对应Delphi的DataSet.First dtSummary.FrxEventOnNext += new FrxOnNext(OnGetValueHandler); //对应Delphi的DataSet.Next dtSummary.FrxEventOnPrior += new FrxOnPrior(OnGetValueHandler); //对应Delphi的DataSet.Prior _report.MainWindowHandle = (int)this.Handle; _report.LoadReportFromFile(GetReportFile("SO.fr3")); //从文件加载报表 _report.ClearDatasets(); dtSummary.AssignToReport(true, _report); //绑定报表数据集 dtDetailView.AssignToReport(true, _report); //绑定报表数据集 dtSummary.AssignToDataBand("MasterData1", _report); //绑定主表Band dtDetailView.AssignToDataBand("DetailData1", _report); //绑定明细表Bank }