top
Loading...
VisualBasic實現動態報表
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。


Visual Basic中如何實現動態報表是一個在眾多VB網站論壇上提問頻率很高的問題,在實際項目中, 作者也遇到這個問題, 經過一番深入研究,用一種簡單的方法在Visual Basic中實現了動態報表。

Visual Basic中制作報表的工具有很多,如Crystal報表編輯器、Datareport報表窗體、Printer對象以及象Vsview等一些第三方控件。但Crystal報表編輯器一般只能制作定制報表,Printer對象操縱起來非常復雜,第三方控件多數需要購買,費用不非。作者制作動態報表是通過Datareport窗體實現的,以下通過一個具體的例子說明是如何實現動態報表的。

假設在C盤dongtai目錄下存放一個Access數據庫stock.mdb,其中的"股票行情表"用來記錄股票行情,"股票行情表"的數據結構如1表所示:

表1 "股票行情表"數據結構

字段名稱ID stocknostocknamepriceswingmaxpriceminpricebargain
數據類型長整型文本 文本雙精度型雙精度型雙精度型 雙精度型長整型
說 明 序號 股票代號 股票名稱收盤價漲跌最高價 最低價 成交量

如果要設計這樣的一個報表,報表輸出字段由用戶自己決定,用Datareport窗體如何設計呢?下面一步一步地說明。

1. 熟悉Datareport窗體和數據報表控件

Datareport窗體是一個和普通窗體相似的窗體,最大的差別是該窗體上只能擺放數據報表控件,這種類型的控件只有六種,他們分別是:RptLabel,Rpt Text Box,RptImage,RptShape,RptLine,RptFunction。從名稱上基本可以識別他們的用途,RptLabel用來顯示非數據綁定的文本的標簽;通常用來制作報表的頁標題;Rpt Text Box顯示數據綁定的文本的內容,即顯示數據庫的字段的內容;RptImage顯示一個圖形,例如一個公司的商標;RptShape能夠畫出許多圖形,強調信息或增強視覺效果;RptLine能夠在報表中畫線,分割報表種不同的區域;RptFunction允許在報表標題或報表注腳區域擺放,它包含一個簡單的數學統計函數。Datareport窗體和數據報表控件如圖1所示。


圖1 Datareport窗體和數據報表控件

為了能夠輸出所有字段,必須在Datareport窗體不同的區域中擺放足夠數量的相關報表數據控件,本例最多字段為八個,所以在"頁標頭"區域(section2)擺放了八個Rptlabel控件、九條豎分割線和上下兩條橫線,在"細節"區域(section1)擺放了八個Rpt Text Box 控件、九條豎分割線和下面一條橫線,如圖1所示。同時為了以后的編碼方便,對各控件采用如下的命名方式:控件名稱為控件類型+區域號+序號,例如,"頁標頭"區域(section2)八個Rptlabel控件分別命名為label21、label22、label23……label28,細節"區域(section1)的八個Rpt Text Box 控件分別命名為Text11、Text12、Text13……Text18,各區域的豎分割線采用同樣的命名方式,但橫分割線以控件類型+區域號來命名,如"頁標頭"區域中的上下兩條橫線分別命名為Line2和Line_2,在后面的代碼里可以看出這種命名方式的好處。

Datareport窗體中最重要的三種數據控件是Rpt Text Box、Rptlabel和RptFunction,必須分別設置它們的屬性,Rpt Text Box最重要的屬性是datafield,該屬性指明了綁定記錄的字段名稱;Rptlabel最重要的屬性是Caption,該屬性指明要顯示的文本內容;RptFunction最重要的屬性是datafield和functiontype,前者指明要綁定且作統計的記錄的字段名稱,后者指明統計函數的類型。這三種控件有一共同屬性是Gangrow,該屬性值為True時,當顯示的內容超過控件的寬度時可以換行。Datareport窗體也有很多屬性,如LeftMargin、RightMargin 、TopMargin 、BottomMargin 、reportwidth 、DataSource 等,其中reportwidth 設置報表的紙面寬度(必須減去左右頁邊距的寬度),reportwidth 須與打印機設置的紙面大小相對應,DataSource設置Datareport窗體的數據源。需要說明的是Datareport窗體中的各個區域都是對象,如section1.section2等,他們也有很多的屬性,其中重點提出Keeptogther屬性,當Keeptogether為True時,如果某條記錄處在一頁的最下面,但又不能夠完全的打印出來時,可強制這條記錄換到下一頁輸出,從而保證數據的完整性。以上只是簡單的說明了Datareport窗體中涉及到的一些重要屬性,其它未加說明的屬性可在相關書籍和MSDN中查閱。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗