using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.... ...
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using FastReport; using FastReport.Data; using FastReport.Editor; using FastReport.Design; using FastReport.Data.ConnectionEditors; using FastReport.Forms; using FastReport.Utils; using FastReport.Table; using System.Data.SqlClient; namespace DataFromArray { /// <summary> /// /// </summary> public partial class Form1 : Form { private int[] FArray; TableObject Table1 = new TableObject(); Report report = new Report(); /// <summary> /// /// </summary> /// <returns></returns> DataSet bindDB() { DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.TableName = "Db"; dt.Columns.Add("id", typeof(int)); dt.Columns.Add("cnname", typeof(string)); dt.Columns.Add("bithdate", typeof(DateTime)); dt.Columns.Add("age", typeof(int)); dt.Rows.Add(1, "geovindu", "2001-12-03",12); dt.Rows.Add(2, "sibodu", "2001-12-03",13); dt.Rows.Add(3, "ginhongzhao", "2001-12-03",15); ds.Tables.Add(dt); return ds; } /// <summary> /// /// </summary> public Form1() { InitializeComponent(); Table1.ManualBuild += new System.EventHandler(Table1_ManualBuild); CreateArray(); } /// <summary> /// /// </summary> private void CreateArray() { FArray = new int[10]; for (int i = 0; i < 10; i++) { FArray[i] = i + 1; } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCreateNew_Click(object sender, EventArgs e) { // create report instance Report report = new Report(); // register the array report.RegisterData(FArray, "Array"); // design the report report.Design(); // free resources used by report report.Dispose(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRunExisting_Click(object sender, EventArgs e) { // create report instance Report report = new Report(); string fileurl = @"..\..\report.frx"; // load the existing report report.Load(fileurl); // register the array //report.RegisterData(FArray, "Array"); report.RegisterData(FArray, "Db"); // run the report report.Show(); // free resources used by report report.Dispose(); } private void Form1_Load(object sender, EventArgs e) { } /// <summary> /// /// 自定義 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { try { //DataTable dd = bindDB().Tables["Db"]; report.RegisterData(bindDB().Tables["Db"], "Db"); report.GetDataSource("Db").Enabled = true; ReportPage page1 = new ReportPage(); page1.Name = "page1"; report.Pages.Add(page1); page1.ReportTitle = new ReportTitleBand(); page1.ReportTitle.Name = "ReportTitle1"; page1.ReportTitle.Height = Units.Centimeters*1.5f; ReportPage page2 = new ReportPage(); page2.Name = "page2"; page2.ReportTitle = new ReportTitleBand(); page2.ReportTitle.Name = "ReportTitle2"; page2.ReportTitle.Height = Units.Centimeters * 1.5f; report.Pages.Add(page2); GroupHeaderBand group1 = new GroupHeaderBand(); group1.Height = Units.Centimeters * 1; group1.Name = "GroupHeader1"; group1.Condition = "[Db.cnname]"; //表.欄位名 page1.Bands.Add(group1); group1.GroupFooter = new GroupFooterBand(); group1.GroupFooter.Name = "GroupFooter1"; group1.GroupFooter.Height = Units.Centimeters * 1; //create databand DataBand data1 = new DataBand(); data1.Name = "Data1"; data1.Height = Units.Centimeters * 0.5f; data1.DataSource = report.GetDataSource("Db"); group1.Data = data1; // TextObject txt1 = new TextObject(); txt1.Name = "txt1"; txt1.Bounds = new RectangleF(0, 0, Units.Centimeters * 19, Units.Centimeters * 1); txt1.HorzAlign = HorzAlign.Center; txt1.Font = new Font("宋體", 14, FontStyle.Bold); txt1.Text = "DB 數據"; page1.ReportTitle.Objects.Add(txt1); //group TextObject txt2 = new TextObject(); txt2.Name = "txt2"; txt2.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); txt2.HorzAlign = HorzAlign.Center; txt2.Font = new Font("宋體", 8, FontStyle.Bold);//Tahoma txt2.Text = "[Db.cnname]"; group1.Objects.Add(txt2); //data band TextObject txt3 = new TextObject(); txt3.Name = "txt3"; txt3.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); txt3.HorzAlign = HorzAlign.Center; txt3.Font = new Font("宋體", 8, FontStyle.Bold); txt3.Text = "[Db.cnname]"; data1.Objects.Add(txt3); TextObject txt4 = new TextObject(); txt4.Name = "txt4"; txt4.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); txt4.HorzAlign = HorzAlign.Center; txt4.Font = new Font("宋體", 8, FontStyle.Bold); txt4.Text = "[Db.age]"; group1.GroupFooter.Objects.Add(txt4); DataSourceBase masterData = report.GetDataSource("Db"); masterData.Init(); //TableColumn cm = new TableColumn(); //cm.Name = ""; //TableColumn column = new TableColumn(); //column.Name = "column"; //column.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); //column.Height = Units.Centimeters * 2.5f; //Table1.Columns.Add(column); //TableColumn column2 = new TableColumn(); //column2.Name = "Cell2"; //column2.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); //column2.Height = Units.Centimeters * 2.5f; //Table1.Columns.Add(column2); //Table1.Border.RightLine = BorderLines.Right; Table1.ColumnCount = 2; Table1.Border.LeftLine.Color = Color.Black; Table1.Border.Lines = BorderLines.None; Table1.Border.TopLine.Color = Color.Black; Table1.Border.TopLine.Width = 1; Table1.Border.ShadowWidth = 4; Table1.Border.RightLine.Style = FastReport.LineStyle.Solid;// TableCell cell = new TableCell(); cell.Name = "Cell1"; cell.Text = "Name"; cell.Font = new Font("宋體", 8, FontStyle.Bold); cell.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); cell.Height = Units.Centimeters * 2.5f; Table1.Columns.Add(cell); TableCell cell2 = new TableCell(); cell2.Name = "Cell2"; cell2.Text = "Id"; cell2.Font = new Font("宋體", 8, FontStyle.Bold); cell2.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); cell2.Height = Units.Centimeters * 2.5f; Table1.Columns.Add(cell2); TableCell cell3 = new TableCell(); cell3.Name = "cell3"; cell3.Text = "[Db.cnname]"; cell3.Font = new Font("宋體", 8, FontStyle.Bold); cell3.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); cell3.Height = Units.Centimeters * 2.5f; Table1.Rows.Add(cell3); TableCell cell4 = new TableCell(); cell4.Name = "cell4"; cell4.Text = "[Db.id]"; cell4.Font = new Font("宋體", 8, FontStyle.Bold); cell4.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); cell4.Height = Units.Centimeters * 2.5f; Table1.Rows.Add(cell4); //TableRow rw = new TableRow(); //while (masterData.HasMoreRows) //{ // TableCell cell = new TableCell(); // cell.Name = "Cell1"; // cell.Text = "[Db.cnname]"; // cell.Font = new Font("宋體", 8, FontStyle.Bold); // cell.Bounds = new RectangleF(0, 0, Units.Centimeters * 2, Units.Centimeters * 1); // cell.Height = Units.Centimeters * 2.5f; // Table1.Rows.Add(cell); // masterData.Next(); //} //page2.Bands.Add(Table1); page2.ChildObjects.Add(Table1); report.Show(); } catch(Exception ex) { ex.Message.ToString(); } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Table1_ManualBuild(object sender, EventArgs e) { DataSourceBase data1 = report.GetDataSource("Db"); // 獲取DataSet中表名為Table1的數據源 data1.Init(); // 初始化 Table1.PrintRow(0); // 控制項Table1列印第0行 Table1.PrintColumns(); // 每列印一行,都要調用 PrintColumn或PrintColumns while (data1.HasMoreRows) // 列印重覆迴圈的行 { Table1.PrintRow(1); Table1.PrintColumns(); data1.Next(); // 讀取下一行 } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { Report report = new Report(); string sql = "select top 2 * from Employee"; DataTable dt = null; dt = DBHelper.GetTable(sql, CommandType.Text, null); string fileurl = @"..\..\report2.frx"; // load the existing report report.Load(fileurl); // report.Design(); report.RegisterData(dt, "Employee"); // run the report report.Show(); // free resources used by report //report.Dispose(); } } }