FastReport.net 經常使用方法

以前提及過FastReport.NET這款報表工具的使用,但當時主要是從程序的角度,示例了在B/S架構下的相關使用,但報表終歸仍是要劃到設計的範疇裏來,畢竟可以將報表的內容展現在客戶的眼前,這纔是報表的根本目的,而諸如打印、轉換格式我的以爲應該算是錦上添花的功能吧。html

  而隨着報表設計的複雜,問題天然也就增多了,沒辦法,硬着頭皮上官網下點文檔吧。數據庫

  這裏將遇到的一些小問題彙總以下,本身作個記錄,須要的朋友也能夠省點「閱讀理解」的時間哈。。。編程

   

  1、頁面設置架構

  情景:FastReport設計器頁面默認設置爲A4紙,但若是須要顯示的字段過多,這時就出現了頁面的大小沒法知足完整顯示所需內容的問題。dom

  解決:出現這個問題後,咱們能夠在來到"文件"—"頁面設置"選項中進行設置,在這裏能夠直接調整頁面的紙張類型和尺寸,可是我使用的時候更多的會調整Portrait爲Landscape,所謂Portrait按詞霸的翻譯就是「紙短的一邊在頂端和底端的打印方式」,而Landscape則偏偏相反,意思是「紙長的一邊在頂端和底端的打印方式」,能夠簡單的理解Portrait爲縱向,Landscape爲橫向,經過這樣的調整既能夠保證用標準的A4紙打印,又知足了設計時可以擴充紙張大小,保證顯示內容的目的。工具

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  

  2、過濾或排序顯示數據spa

  情景:爲了將數據按順序顯示,便於查看。.net

  解決:此時能夠雙擊數據區,這時就會看到排序和過濾的選項,能夠經過點擊後面fx圖標,使用設計器的方式實現,固然也能夠手動添加代碼:翻譯

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

 

  3、添加和設置子報表設計

  情景:顯示覆雜關係的數據。

  解決:進入"報表"--"設置報表欄",能夠對報表進行各類設置,其中數據首隻會打印一次,數據尾則會在全部數據以後被打印。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  

  4、日期顯示

  情景:有些數據表裏的日期字段是空的,這時FastReport會自動將其轉化爲0001/1/1的形式。

  解決:此時若是想要讓日期爲空時不顯示此默認的形式,能夠再次進入"報表"--"選項"中,在"通常"選項卡中取消勾選"轉換空值"便可。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  5、數據表的嵌套

  情景:複雜的數據庫表之間有不少複雜的主從對應關係,這時須要在數據源中創建關係。

  解決:選擇動做--新建關係,而後就能夠象在數據庫裏同樣創建主外鍵關聯了。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  6、手動肯定數據源

  情景:有些時候SQL語句創建表的關係過於複雜,以致於很難創建良好的主從關係,好比我遇到的這樣的SQL查詢

  SELECT i.SheetKeyId,i.SheetId,i.OperatorName,
      i.InCheckDateTime,i.OutCheckDateTime,i.OutCheckPeople,
      s1.BranchName AS InBranchName,s2.BranchName AS OutBranchName
    FROM   dbo.T_StorageBranch s1 , dbo.T_StorageBranch s2 ,
      dbo.T_LeechdomIOSheet i , dbo.T_LeechdomIOSheet i2
    WHERE  i.InBranchKeyId = s1.BranchKeyId
    AND    i2.OutBranchKeyId = s2.BranchKeyId
    AND    i.SheetId = i2.SheetId

  既有自表關聯,又有和其餘表的關聯,那創建主從關係豈不要鬱悶死。。。

  解決:此時個人解決方法有兩種,一個是基於FastReport是支持表和視圖做爲數據源的,此時能夠事先在數據庫中創建視圖,從而使用視圖做爲數據源解決此表的關聯問題,固然如沒有項目的需求,大可採用第二種方法,即點擊"添加SQL查詢",這是輸入咱們的SQL語句,便會自動生成一個查詢結果,咱們只須要在報表設計時用其做爲數據源就ok了。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  7、使用系統變量

  情景:咱們常常會在報表打印時要求顯示當前的頁數,當前的數據量統計以及當前的打印時間等。

  解決:FastReport其實已經咱們內置了全部這些功能,能夠在系統變量中找到,只須要簡單的拖入Date就能夠顯示出當前日期,拖入PageN就能夠顯示頁碼等。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  8、使報表顯示時呈現常見的奇偶行變色效果。

  情景:數據量大時能夠方便查看數據。

  解決:這裏一樣有兩種方法,一是在"報表"--"樣式"中添加一個樣式,叫作EvenRows,什麼樣式都不用設置,肯定便可,而後單擊數據區,在外觀的EvenStyle屬性裏面選擇此樣式,最後改變Fill屬性的填充顏色便可。第二種方法是經過程序的方式來實現,代碼以下:

  private void Data1_BeforePrint(object sender, EventArgs e)

  {

      if (((Int32)Report.GetVariableValue("Row#")) % 2 == 0)

         Data1.FillColor = Color.Gainsboro;

  }

  這裏的Row#爲系統內置變量,表明行號,咱們選出偶數行後,設置FillColor爲本身想要的顏色便可,但不可爲window顏色,這樣就看不出效果了。

  9、使用程序操做報表

  情景:在窗體程序中可使用編程的方式對報表的相關字段進行操做。

  解決:

    //獲取數據源中列的值

    string productName = (string)Report.GetColumnValue("Products.Name");

     

    //獲取數據源

    DataSourceBase ds = Report.GetDataSource("Products");

 

    //獲取系統變量值

    DateTime date = (DateTime)Report.GetVariableValue("Date");

 

    //獲取總計數

    float sales = Report.GetTotalValue("TotalSales");

 

    //獲取參數

    int myParam = (int)Report.GetParameterValue("MyParameter");

 

    //設置參數

    report1.SetParameterValue("EmployeeID", 2);

  10、備註

  一、在FastReport中的變量都使用的是[DataSourceName.FieldName]的形式,凡是以這種形式表示的都須要從數據庫中讀取,而普通文本則須要[文本內容]這樣的形式就能夠搞定。

  二、在FastReport中能夠設定數據表的別名,這樣能夠在多表關聯的時候使用別名與相關字段對應。

  三、若是你尚未心動的話,我貼幾張現成的基於Northwind數據庫的demo示例看看吧。。。

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  

  FastReport.net 經常使用方法 - hcyu2012 - hcyu2012的博客

  

  估計就說這麼多了,好用的東西你們一塊兒分享哇。。。^_^

做者:Rocky翔出處:http://www.cnblogs.com/RockyMyx/本文版權歸做者和博客園共有,歡迎轉載,但請在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索