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

1、FastReport的簡介html

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

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

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

你們不用再去網上找中文破解包之類的,直接在菜單裏找到「File」——>「Select Language」,而後選擇咱們須要的中文簡體就OK了。url

3、在Winform中使用FastReportspa

一、新建一個窗體,給窗體拖入.net

這個控件,3d

而後設置屬性,最終成這樣code

二、新建一個frx報表,打開咱們新安裝的,打開以後選擇「文件」——>「新建」,選擇空報表。orm

而後給空報表選擇數據源,若是不選則會報這個錯

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

我須要的數據是用紫紅色標出來的那四個字段,這裏須要注意那個紅色圈出的按鈕「添加SQL查詢...」(注:若是你須要的只是一個表裏的所有或部分數據,那麼直接點「完成」便可)

【這裏修改一下哈,能夠不勾選表裏面的字段,而後直接點擊「添加sql查詢...」按鈕的,這樣在下面的數據源裏就不會出現UserInfo和Dept這兩個表了,直接一個Table就OK了】

點擊這個按鈕,而後「下一個」到這個頁面

而後一直點擊「下一個」直到完成。

 而後就會發現報表右側的數據源裏多了個Table

而後將Table裏面的字段直接拖入報表你想要顯示數據的位置便可。

 

這個數據區顯示的數據源,決定你報表顯示的數據。這就是爲何非要把兩個表裏的字段整合到一個表中的緣由。(有興趣的本身試試,選擇不一樣的數據區,導出的數據有什麼區別)

【其實這個時候,你點擊報表中的預覽按鈕已經可以顯示出裏面的數據了,固然,參數time的值除外。因此到這裏我就迷惑了,都已經把數據源搞定了,我在代碼裏還折騰啥呢?可是一旦在報表中不給數據源,那裏面的字段怎麼拖進去?後續應該怎麼作?這個有知道的但願可以留言解惑,拜託啦~】

報表模板就算作完了,而後保存,本身選個路徑。而後我是又把它複製到了Reports這個文件夾裏。在VS中打開frx報表,會以xml文件的形式打開。若是想要再次修改報表模板,能夠選中

報表,右鍵選擇打開方式,找到就OK了。還有一點須要注意,就是報表放進文件夾後須要右鍵屬性,而後在「複製到輸出目錄中」必定要選成「始終複製」。

,要否則編譯

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

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

三、代碼,這裏給報表附數據源,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); } }

最後報表顯示的數據(由於頁面太大,不能把前邊的數據和操做時間截在一塊兒,只能兩張圖了):

相關文章
相關標籤/搜索