關於FastReport在winform中的使用(包含FastReport.net的安裝步驟鏈接)


一、FastReport的簡介

FastReport是功能齊全的報表控件,使開發者可以快速並高效地為·NET/VCL/COM/ActiveX應用程序添加報表支持。

二、FastReport的安裝(推薦網址:https://www.cnblogs.com/yoyo-524/p/6116884.html

感覺寫的安裝步驟很詳細了,在這就不贅述了。另外提一個小問題,就是按照步驟我們安裝好的是英文,怎么轉成中文呢?

大家不用再去網上找中文破解包之類的,直接在菜單里找到“File”——>“Select Language”,然后選擇我們需要的中文簡體就OK了。

三、在Winform中使用FastReport

1、新建一個窗體,給窗體拖入

這個控件,

然后設置屬性,最終成這樣

2、新建一個frx報表,打開我們新安裝的,打開之后選擇“文件”——>“新建”,選擇空報表。

然后給空報表選擇數據源,如果不選則會報這個錯

菜單“數據”——>“添加數據源”,然后就是一系列的選擇數據庫,寫用戶名,密碼這類的,填寫好后點擊“下一個”,然后出現這個頁面。

我需要的數據是用紫紅色標出來的那四個字段,這里需要注意那個紅色圈出的按鈕“添加SQL查詢...”(注:如果你需要的只是一個表里的全部或部分數據,那么直接點“完成”即可)

【這里修改一下哈,可以不勾選表里面的字段,然后直接點擊“添加sql查詢...”按鈕的,這樣在下面的數據源里就不會出現UserInfo和Dept這兩個表了,直接一個Table就OK了】

點擊這個按鈕,然后“下一個”到這個頁面

然后一直點擊“下一個”直到完成。

 然后就會發現報表右側的數據源里多了個Table

然后將Table里面的字段直接拖入報表你想要顯示數據的位置即可。

 

這個數據區顯示的數據源,決定你報表顯示的數據。這就是為什么非要把兩個表里的字段整合到一個表中的原因。(有興趣的自己試試,選擇不同的數據區,導出的數據有什么區別)

【其實這個時候,你點擊報表中的預覽按鈕已經能夠顯示出里面的數據了,當然,參數time的值除外。所以到這里我就迷惑了,都已經把數據源搞定了,我在代碼里還折騰啥呢?但是一旦在報表中不給數據源,那里面的字段怎么拖進去?后續應該怎么做?這個有知道的希望能夠留言解惑,拜托啦~】

報表模板就算做完了,然后保存,自己選個路徑。然后我是又把它復制到了Reports這個文件夾里。在VS中打開frx報表,會以xml文件的形式打開。如果想要再次修改報表模板,可以選中

報表,右鍵選擇打開方式,找到就OK了。還有一點需要注意,就是報表放進文件夾后需要右鍵屬性,然后在“復制到輸出目錄中”一定要選成“始終復制”。

,要不然編譯

report.Load(filename);//找不到文件,報錯

的時候在bin\Debug\...文件目錄下找不到報表文件,會報錯。

3、代碼,這里給報表附數據源,datatable和dataset都可以。

 private void FormFR_Load(object sender, EventArgs e)
        {
            DataSet data = null;
            string conStr = "Server='127.0.0.1';database=demo;UID='sa';PWD='wsn******';";
            try
            {
                SqlConnection con = new SqlConnection(conStr);
                con.Open();
                string sql = @"select Dept.DeptID,Dept.DeptName,UserInfo.UserName,UserInfo.Salary from 
dbo.Dept left join dbo.UserInfo on Dept.ID=UserInfo.DeptID
"; SqlCommand sqlcmd = new SqlCommand(sql, con); SqlDataAdapter sda = new SqlDataAdapter(sqlcmd); data = new DataSet(); sda.Fill(data); con.Close(); sda.Dispose(); } catch (Exception err) { MessageBox.Show(err.StackTrace); } try { FastReport.Report report = new FastReport.Report(); string filename = @"Reports\fr一覽.frx"; report.Load(filename); report.Preview = this.previewControl1;//讓報表顯示在窗體的控件中

 


                report.RegisterData(data);
                report.SetParameterValue("time", DateTime.Now.Date.ToString("yyyy-MM-dd"));//報表里的參數賦值
                report.Prepare();
                report.ShowPrepared(); 
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

最后報表顯示的數據(因為頁面太大,不能把前邊的數據和操作時間截在一起,只能兩張圖了):

 


免責聲明!

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



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