MVC架構 使用FastReport


1.Web.config文件

添加配置

<httpHandlers>
<add path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
</httpHandlers>

2.在包含views的文件夾中webconfig中加入以下信息:引用命名空間

<add namespace="FastReport"/>
<add namespace="FastReport.Web"/>

3.在_Layout.cshtml文件中<head>加入

@WebReportGlobals.Scripts()  

@WebReportGlobals.Styles() 

4.在view視圖中加入

@ViewBag.WebReport.GetHtml()

5.后台

//數據庫中讀取報表,並加載數據和報表
        public void ReadBlob(int idData, DataSet dataSet)
        {
            OracleConnection conn = new OracleConnection();
            string connString = "Data Source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.86.45)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCL)));User ID=DWMP;Password=DWMP;Persist Security Info=True";
            using (conn = new OracleConnection(connString))
            {
                try
                {
                    conn.Open();
                    OracleCommand cmd = conn.CreateCommand();
                    // 利用事務處理(必須)
                    OracleTransaction transaction = cmd.Connection.BeginTransaction();
                    cmd.Transaction = transaction;
                    // 獲得 OracleLob 指針
                    string sql = "select REPORTDATA from BASE_FORMPRINT where id= " + idData;
                    cmd.CommandText = sql;
                    OracleDataReader dr = cmd.ExecuteReader();
                    dr.Read();
                    //讀取內存流
                    MemoryStream ms = new MemoryStream((byte[])dr["REPORTDATA"]);

                    WebReport report = new WebReport();//創建報表對象
                    report.Width = 740;
                    report.Height = 600;
                    report.Report.Load(ms);//加載內存流
                    report.Report.RegisterData(dataSet);//傳遞數據
                    ViewBag.WebReport = report;//賦值報表給頁面
                    ms.Dispose();
                    report.Dispose();
                    cmd.Parameters.Clear();
                    // 提交事務
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    conn.Close();
                }
            }
        }
//動作:打印預覽  
        // GET: /Print/PrintDetail
        public ActionResult PrintDetail(int reportid, int opersheetid)
        {
            ViewBag.Message = "PrintDetail";
            DataSet dataSet = getDataSet(reportid,opersheetid);//獲得數據集
            ReadBlob(reportid, dataSet);//加載報表
            return View();
        }


        //獲得單據數據集
        private DataSet getDataSet(int reportid,int opersheetid)
        {
            DataSet dataSet = new DataSet();
            string getViewName = "select * from base_formprint where id=" + reportid;
            DataTable dt=DbHelperOra.Query(getViewName).Tables[0];
            string sheetView=dt.Rows[0]["sheetdataset"].ToString();
            string detailView = dt.Rows[0]["detaildataset"].ToString();
            string checkView = dt.Rows[0]["aduitdataset"].ToString();
            if (!String.IsNullOrEmpty(sheetView))
            {
                string sqlSheet = "select * from " + sheetView + " where id=" + opersheetid;//單據信息
                DataTable dt1 = DbHelperOra.Query(sqlSheet).Tables[0];
                dt1.TableName = sheetView;
                dataSet.Tables.Add(dt1.Copy());
            }

            if (!String.IsNullOrEmpty(detailView))
            {
                string sqlDetail = "select * from " + detailView + " where sheetid=" + opersheetid;//明細信息
                DataTable dt2 = DbHelperOra.Query(sqlDetail).Tables[0];
                dt2.TableName = detailView;
                dataSet.Tables.Add(dt2.Copy());
            }

            if (!String.IsNullOrEmpty(checkView))
            {
                string sqlCheck = "select * from " + checkView + " where id=" + opersheetid;//審核
                DataTable dt3 = DbHelperOra.Query(sqlCheck).Tables[0];
                dt3.TableName = checkView;
                dataSet.Tables.Add(dt3.Copy());
            }
            return dataSet;
        }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM