FastReport 在C#中的应用-Learning_1

发布时间 2023-07-12 20:13:52作者: 丹心石

1.报表模板设计

image

2.c# 代码

using FastReport;
using Oracle.ManagedDataAccess.Client;
using Sunny.UI;
using System;
using System.Data;
using System.Windows.Forms;
namespace WinPrint
{
    public partial class Form1 : UIForm
    {
        private DataSet ds = null;
        public Form1()
        {
            InitializeComponent();
            ds=new DataSet();
        }

        private void uiButton1_Click(object sender, EventArgs e)
        {
            Report rp=new Report();
            rp.Clear();
            rp.Load(@"c:\reports\rp1.frx");  //加载报表模板
            rp.RegisterData(ds,"tb1",true);  //注册数据集  第一个参数是数据集  第二个参数是使用数据集中那个表,这里是 tb1  第三个参数是是否使用数据集ds中的所有表
            DataBand band=rp.FindObject("Data1") as DataBand;  //查找报表中的对象Data1 即DataBand
            band.DataSource = rp.GetDataSource("tb1"); //设置DataBand 的数据集为当前报表注册的数据集中的表(并非具体的表,可以是一个查询或者视图)
            if (rp.Prepare()) {  //准备报表
                rp.ShowPrepared();  //显示报表
            }

        }

        private void uiButton2_Click(object sender, EventArgs e)
        {
            string connStr = "Data Source=localhost:1521/ORCL;User Id=**;Password=****";
            using (OracleConnection conn = new OracleConnection(connStr)) {
                try {
                    conn.Open();
                    OracleCommand cmd= conn.CreateCommand();
                    cmd.Parameters.Clear();
                    cmd.CommandType=CommandType.StoredProcedure;
                    cmd.CommandText = "mypackage.pr_getEmployee";
                    cmd.Parameters.Add("res", OracleDbType.RefCursor, 50, ParameterDirection.Output);
                    OracleDataAdapter oda=new OracleDataAdapter(cmd);
                    oda.Fill(ds, "tb1"  );
                    uiDataGridView1.DataSource = ds.Tables[0];  
                }
                catch(Exception ex) {
                    MessageBox.Show(ex.Message);
                }   
            }
        }
    }
}

注意事项

rp.RegisterData(ds,"tb1",true) 这里如果缺省了第三个参数,就会导致报表只显示第一行,虽然这参数是控制数据DataSet中所有的表是否启用

image