using System;
using System.Data;
using System.ComponentModel; using FastReport;
namespace cx {
///
/// Summary description for FrxDataSet. ///
public class FrxDataTable : DataTable {
private int nItem;
TfrxUserDataSetClass m_ds;
private DataTable m_ChildTable;
public new string TableName {
get { return m_ds.Name; } }
public IfrxDataSet FrxTable {
get { return m_ds as IfrxDataSet; } }
private void constructor(string name) {
m_ChildTable = null;
m_ds = new TfrxUserDataSetClass();
m_ds.OnCheckEOF += new
IfrxUserDataSetEvents_OnCheckEOFEventHandler(OnCheckEOFEventHandler); m_ds.OnGetValue += new
IfrxUserDataSetEvents_OnGetValueEventHandler(OnGetValueHandler); m_ds.OnFirst += new
IfrxUserDataSetEvents_OnFirstEventHandler(OnFirstEventHandler); m_ds.OnNext += new
IfrxUserDataSetEvents_OnNextEventHandler(OnNextEventHandler); m_ds.OnPrior += new
IfrxUserDataSetEvents_OnPriorEventHandler(OnPriorEventHandler);
m_ds.Name = name;
DataColumnCollection cols = Columns; cols.CollectionChanged += new
CollectionChangeEventHandler(ColumnsCollection_Changed);
纪兆亮自学FastReport 1
}
public FrxDataTable(string name) {
constructor(name); }
public FrxDataTable(DataTable t) {
constructor(t.TableName); string FieldNames = null;
foreach (DataColumn col in t.Columns) FieldNames += col.Caption + \; m_ds.Fields = FieldNames; m_ChildTable = t; }
///
/// Assigns table to report ///
public void AssignToDataBand(string BandName, TfrxReportClass report) {
IfrxComponent frx_component;
((IfrxComponent)report).FindObject(BandName, out frx_component); ((IfrxDataBand)frx_component).DataSet = (IfrxDataSet)m_ds; }
///
/// Assigns table to report ///
public void AssignToReport(bool Enable, TfrxReportClass report) {
report.SelectDataset(Enable, m_ds); }
///
/// On First event handler ///
private void OnFirstEventHandler() {
nItem = 0; }
///
/// On Next event handler ///
private void OnNextEventHandler() {
纪兆亮自学FastReport 2
nItem++; }
///
/// On Prior evene handler ///
private void OnPriorEventHandler() {
nItem--; }
///
/// On check EndOfFile event handler ///
private void OnCheckEOFEventHandler(out bool eof) {
if (m_ChildTable == null) {
eof = (nItem >= Rows.Count); } else {
eof = (nItem >= m_ChildTable.Rows.Count); } }
///
/// On get value handler ///
private void OnGetValueHandler(object VarName, out object Val) {
if (m_ChildTable == null) {
Val = Rows[nItem][VarName.ToString()]; } else {
Val = m_ChildTable.Rows[nItem][VarName.ToString()]; }
// FastReport does not know about System.Decimal object type // so convert it to Integer if (Val is Decimal) {
Val = Decimal.ToInt32((Decimal)Val); } }
纪兆亮自学FastReport 3
///
/// Updates FastReport UserDataSet on Column addition ///
private void ColumnsCollection_Changed(object sender, CollectionChangeEventArgs e) {
DataColumnCollection cols = (DataColumnCollection)sender; string FieldNames = null;
foreach (DataColumn col in cols) FieldNames += col.Caption + \; m_ds.Fields = FieldNames; } } }
Button按钮中的代码 引用FastReport
FastReport.TfrxReportClass report = new FastReport.TfrxReportClass(); report.MainWindowHandle = (int)this.Handle;
report.LoadReportFromFile(Application.StartupPath + \);
alluse.FrxDataTable rptdataset1 = new alluse.FrxDataTable(\); SqlDataAdapter sda = new SqlDataAdapter(\, alluse.Class1.conn1);
sda.Fill(rptdataset1);
rptdataset1.AssignToReport(true, report);
rptdataset1.AssignToDataBand(\, report);// MasterData1报表中的主数据
report.ShowReport();
以上是成功代码。。。。。。。。。。。。
private void button2_Click(object sender, EventArgs e) {
FastReport.TfrxReportClass report = new FastReport.TfrxReportClass(); report.MainWindowHandle = (int)this.Handle;
report.LoadReportFromFile(\添加报表路径 FrxDataTable rptdataset1 = new FrxDataTable(\
FrxDataTable rptdataset2 = new FrxDataTable(\
OleDbDataAdapter oleDbDataAdapter1 = new OleDbDataAdapter(\* from TZ_Unit\
oleDbDataAdapter1.Fill(rptdataset1);
OleDbDataAdapter oleDbDataAdapter2 = new OleDbDataAdapter(listsql, Class1.conn1);
oleDbDataAdapter2.Fill(rptdataset2);
// rptdataset1.AssignToReport(true, report); // rptdataset2.AssignToReport(true, report);
// rptdataset2.AssignToDataBand(\
report.ShowReport(); }
4
纪兆亮自学FastReport