FastReport.Net 常用功能總匯


.常用控件

 

      文本框:輸入文字或表達式

      表格:設置表格的行列數,輸入數字或表達式

      子報表:放置子報表后,系統會自動增加一個頁面,你可以在此頁面上設計需要的報表。系統在打印處理時,先按主報表打印,當碰到子報表時會自動轉入子報表的頁面進       行打印處理,完成后繼續執行主報表打印的工作,所以我們又稱之為嵌套報表。

      復選框:根據布爾表達式是否為ture來顯示是否 (如性別男女)

      條形碼:綁定掃描碼(如靜滴單),一般TypeCode128 

              交叉表:Matrix

              頁面設置:設置紙張大小及頁邊距

              邊框設置:設置是否顯示上下左右邊框以及邊框線條的設置

              邊框寬度:下拉三角可以選擇邊框寬度設置

 

.常用報表欄

      

報表標題區(ReportTitle):僅在第一頁顯示在紙張的上部。一般用於打印報表的標題等信息。

 

報表合計(ReprotSummary):僅顯示在所有數據的最后末尾。一般用於打印統計信息等。

 

頁眉(PageHeader):顯示在每頁的最上部。通過設置你可以讓它置於報表抬頭之上或者之下。一般用於打印頁眉信息等。

 

數據區(data):綁定數據源顯示數據。

 

數據首(Header):顯示在所有數據源的最上部,僅打印一次。一般用於顯示相關摘要信息,與頁眉的區別是當該頁無數據時,數據首的內容不顯示且僅顯示一次。

 

數據尾(Footer):顯示在所有數據源的最下部,僅打印一次。一般用於顯示所有數據的合計信息。

 

欄首(ColumnHeader):顯示在每頁數據源的上部,它在每頁均顯示。因此一般用於打印數據源字段的欄目信息。

 

欄尾(ColumnHeader):顯示在每頁數據源的下部,它在每頁均顯示。一般可用於統計顯示每頁數據的頁合計信息。

 

分組頁眉(GroupHeader):用於顯示分組數據,在每一個分組開始顯示。

 

分組頁腳(GroupFooter):與群組首一一對應。一般用於顯示分組數據的統計信息。

 

頁腳(PageFooter):顯示在每頁的最底部。一般用於打印頁序等信息。

 

.常用功能

 

1.添加報表欄

 

將光標置於“設置報表攔”彈出“段編輯器”,再選擇添加或刪除段。

 

添加段的時候要注意:

 

     1)選擇添加段的位置,如想添加子數據區,則選中要添加父數據區,點擊添加“數據區”即可,如圖所示:

                   

       

       2)若添加的數據區與原數據區平級,任選段(除數據區外),點擊添加“數據區”即可,如圖所示:

                   

         

2.添加數據源

 

選擇菜單欄的“數據”,在下拉框中選中“選擇數據源”,彈出“選擇報表數據”框,里面會列出已經傳出的數據源,勾選需要的數據源,點擊確定,此時界面右邊“數據”列表中即顯示當前所選中的數據源,選中數據源,右鍵選擇“查看數據”,即可顯示當前數據源中所含有的數據:

                  

                 

 

3.添加系統變量

對於部分變量可能取自當前系統,如時間,頁碼,序號等,此時選擇系統變量中相應的變量即可,如圖:

                                                               

4.添加匯總

對於一些報表,需要在數據尾添加合計行,此時需要手動添加合計,彈出匯總項編輯器,再在匯總項編輯器中添加匯總數據源。

                                        

在匯總名稱一欄可以自命名一個合計名稱;

                                         

在“數據列或公式”中可以選擇匯總的數據源;

在“計算段中每一列”可以選擇參與匯總的數據區;

在“計算滿足下面條件的行”中可以做過濾,在寫total時會出現計算某種類型的和,比如計算總人次分在職和退休之和,此時在寫total時就需要寫限制條件進行過濾。如[Table1.GRXZ]=="1";如圖:

                                                         

5.添加過濾、排序、分組

雙擊數據區,彈出“編輯數據段”,可以進行數據源的選擇、排序、過濾。如圖:

                                           

 

.常用屬性

1.頁面設置

用於顯示總的頁數(TotalPages),例如:頁腳顯示 第1頁/共20頁。系統第一遍掃描報表時計算出TotalPages,然后第二遍實際生成報表。如果不使用Double pass,則TotalPages返回0,所以必須設置report的屬性doublepass為true;

設置方法:點擊報表樹,單擊報表樹最頂端圖標,點擊屬性,選擇doublepass為true;也可直接在屬性框中選擇report,進行相關屬性設置!如圖:

                                          

2.打印設置

對於套打模板,樣式在紙張上已經固定了(如處方箋、收費發票),只需要按照原定的樣張將數據填充進去,在繪制的時候,需要用直尺良好尺寸,為了能夠有一個更好的效果,一般把頁面上已經存在不需要再打印出來的也畫出來,但是需要設置屬性“printable”為false:表示打印不顯示,若想在預覽的時候就不要看到那些不需要打印的,則需設置屬性“Visible”為false:表示預覽不顯示

3.格式設置

報表中有的數據需要按照規定的格式去顯示,如需要把時間的格式改變一下,選中當前數據,右鍵單擊,點擊format(或在屬性欄中選擇format),在彈出的選擇格式框中選擇需要的格式。若format中沒有需要的格式,則需要在custom中自定義,比如我需要把時間設置為2012-09-09 11:22:23,此時可以在custom中填時間顯示格式:yyyy-MM-dd HH:mm:ss。注意有的需要顯示上午還是下午,表示上午下午的格式是tt,具體相關設置可以參照已存在的format進行編輯!如圖:

                                                  

              

4.顯示設置

對於有些數據,名稱較長,在行高固定的情況下,系統默認為自動換行,此時兩者均不能完全顯示不能完全顯示,比如,此時按照客戶的需求,若要求自動截斷,則設置“WordWrap”為false(即不自動換行),若要求全部顯示,則需要讓該數據有按照單元格大小自動縮放功能,設置屬性“AutoShrink”為fontsize或者fontwith

5.邊框設置

邊框可以通過工具欄設置,此時設置邊框是根據外界框的大小來顯示,下邊框的設置也可以通過設置下划線,此時下邊框的長度是根據數據顯示的長度來決定,還可以設置屬性“underline”為true,此時也是根據邊框的大小來顯示的。

6.表格設置

1)表格的行列數:通過屬性設置ColumnCount(列)和RowCount(行)設置。

2)合並/分割單元格:選中需要合並/分割的單元格,右鍵單擊,選擇“合並單元格”/“分割單元格”,如圖:

                                               

 

3)插入行列:選中某行、某列,右鍵單擊,選擇需要插入的位置,如圖:

                                    

 

.常用代碼

 

1.在文本編輯器中編寫

 

Fastreport軟件自身帶了很多功能實現數據的轉換,直接在編輯框中即可實現。

                             

 

常用的功能有:              

                                        選擇語句IFF控制語句Switch

                             截取字符串語句SubString,在text列表中選擇SubString

                                 截取時間語句Date&Time

                                         算數運算語句Mathematical常用的有Abs(取絕對值)。

 

注意,在運用這些function的時候,在文本編輯器右下角會顯示當前功能的用法規則,如圖:

 

若當前數據類型不滿足規則,則需要利用上面的轉換語句,將其轉換成與規則相符的數據類型,才能利用這些function,否則會報錯。

 

2.code區編寫

 

有些數據的轉換在編輯器中不能直接實現,需要在code區域編寫代碼。寫代碼之前需要定義到相應的事件上:選中需要寫代碼的數據所在的報表攔,在屬性設置中點擊,在事件中雙擊需要用到的事件,自動跳轉到code區,且會出現一行代碼,類似於private void GroupHeader1_BeforePrint(object sender, EventArgs e)

 

    {

 

    }

 

報表中常用事件有BeforePrint,AfterPrint。

 

3.常用代碼

 

1)Data1.InitDataSource();//數據初始化,用於數據跑兩遍

 

2)有的需要把年月日進行分離顯示,此時需要選取時間並選擇只顯示時間的某部分,比如某個DateTime2類型的參數值為20120919,現需要將其年月日分開,分別以__年__月__日顯示,需要利用fastreport提供的功能進行分離,即1中的方法,但是注意此種方法只能用於數據類型為datetime的數據;對於非datetime型的數據,可以寫代碼取位數或者進行強制轉換,以string為例:

 

private void ColumnFooter1_BeforePrint(object sender, EventArgs e)

 

    {

 

      string  tbrq=  ((String)Report.GetColumnValue("Table1.TBRQ"));

 

      if (!String.IsNullOrEmpty(tbrq))

 

      {

 

        Text9.Text = tbrq.Substring(0,4) + "年" + tbrq.Substring(4,2) + "月"+tbrq.Substring(6,2)+"日";

 

      }//字符串型用SubString,Substring(0,4)表示從第0位開始,取出四位作為年。

 

3)小數位的控制:可以用format對所有數據的小數位進行控制,但只對於數值型的數據才有效,但是對於string型的則需要用語句進行實現,如:

 

decimal sl= ((Decimal)Report.GetColumnValue("dtfee.Quantity");

 

Cell51.Text=sl.ToString("0.00");// "0.00"若不填則按照默認值顯示,后面多少個零顯示出來的數據即為有多少個小數;對於數量,有時要求要求有小數時則顯示小數,無小數時則顯示整數,此時只需要將"0.00"改為"0.##"即可,##的個數也是可以自定義的,表示顯示的最多的小數位。

 

特殊功能匯總

 

.打印中實現空表格填滿剩余的空行,達到指定的行數。

 

1.單頁顯示指定行數

 

為了能讓數據在未填滿的前提下,該頁也能顯示指定的行數N,需要在數據區(data)添加子報表(child),且需要設置其屬性最少數據行(CompleteToNRows)為N。

 

 

 

 

                             

2.按照數據行數顯示指定行數

 

按照1的設置,預覽的時候會發現該操作只會控制首頁滿足條件,當數據的行數超過一頁時,后面頁均按照有多少數據顯示多少行,此時需要寫代碼控制。

 

如:

 

private void PageHeader1_AfterPrint(object sender, EventArgs e)

 

{      if (Engine.FinalPass)

 

      {

 

        Child1.CompleteToNRows = ((Int32)Report.GetVariableValue("TotalPages")) * 20;

 

      }//按照總頁數*20來控制CompleteToNRows。

 

}

 

此時報表攔中的child區CompleteToNRows設置為1,如圖:

.本頁合計和本期合計

1.本頁合計

在每頁均會顯示,且統計當前頁相關數據的和。此時勾選“打印后重置”項,再將合計項移到相應的位置即可。如圖:

 

 

 

2.本期小計

在每頁均會顯示,但是指在數據的最后一頁顯示合計的數據,統計當前報表的所有數據和;需要寫total來計算當前值,只是本期小計中打印后重置這個屬性不勾選,由於本期小計只在最后一頁顯示數據,其他頁面上數據區均為空,需要代碼控制,例如:

private void ColumnFooter1_BeforePrint(object sender, EventArgs e)

    {

      if(((Int32)Report.GetVariableValue("Page"))!=((Int32)Report.GetVariableValue("TotalPages")))//設置顯示本期小計需要的條件,即當前頁與總頁數相一致的時候,開始顯示數據,否則為空。

.交叉表的用法 (演示)

參照模板    收費員結賬匯總報表.frx

注意交叉表的行列寬度不需設置,自動按照數據長短進行設置。

.套打模板(演示)

參照模板   門診掛號發票(套打).frx,處方箋(綜合).frx

掛號發票的模板

注意,在周浦項目中,由於處方箋模板不一樣,在醫生工作站會根據選擇調用不同的模板,此時是將幾種不同的模板組合在一塊,再根據標志調用相應的模板。

.超鏈接模板(演示)

報表&單據導入

一. 單據導入

單據即由開發直接傳入數據源,在模塊中實現單據的繪制。

步驟:找到相對應的模塊,點擊打印,進入空白模板,再進行設計。對於已經繪制好的模板,可以直接導入,但注意,必須在本地把數據源清空,再導入,否則將會出現data區重復,導致命名出現異樣,如data11

有些模板即使清空數據源導入到模板,仍然會報錯,則需要重新新建一個模板,再將原模板的東西復制進去即可。

相關聯的表有:select * from Common.ReportTemplate

.報表導入

報表即由存儲過程實現,然后再對應到相應的存儲過程,去存儲過程中的數據。

步驟:報表管理à新建報表à填寫相應的信息后保存(演示)à繪制模板

注意:填寫信息時要綁定正確的存儲過程,同時通過前台改變相應的界面顯示效果。

添加數據源:選擇sql,再選擇相應的存儲過程,確定即可,對於新建的模板,模板一欄不需要選擇,若選擇了則會調用以前存在的模板,同時改動的話也會影響以前的模板。

相關聯的表有:

select * from Common.Report 

select * from Common.ReportDataSource

select * from Common.ReportTemplate

select * from Common.ReportFolder

select * from Common.ReportParameter

 

說明:fastreport自身帶有Demo,里面很多功能都是可以供大家學習參考的。

 

 

 

                              

 

 

 

 

 

 

 

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com