VB6中用DataReport做報表

2021-03-31 08:56:58 字數 2796 閱讀 3510

vb6中用datareport做報表

2002-01-08· ·李** ··yesky

我不是vb熟練工,最近剛剛用vb做完乙個程式,其中控制部分沒費太大周折,倒是報表部分頗讓我費了一翻腦筋。在網上找了半天,也沒找到關於vb6的 datareport的詳細介紹,於是想借鑑"前輩"們的經驗,用crystalreport或excel,感覺也不省勁,於是決定回頭再去"啃"datareport,別說,還真讓有所收穫,下面就簡單的介紹一下我的體會,希望對大家能有所幫助。

首先介紹一下datareport物件的幾個常用屬性。一是datasource,用於設定乙個資料來源,通過該資料來源,資料使用者被繫結到乙個資料庫;二是datamember,從datasource提供的幾個資料成員中設定乙個特定的資料成員;三是leftmargin、rightmargin、topmargin、bottommargin等,用於指定報表的左右上下的頁邊距;四是sections,即datareport的報表標頭、頁標頭、細節、頁腳注、報表腳注5個區域,如果加上分組(可以有多層分組),則增加一對區域,即分組標頭、分組腳注。其中datasource一般是乙個資料環境或是adodb.connection型別的變數,而datamember則對應資料環境中的***mand或是adodb.recordset型別的變數,推薦使用資料環境及***mand,頁邊界大家肯定都很清楚,下面我主要介紹以下sections,這也是datareport的精髓所在。

sections是乙個集合,您可以為每乙個section指定名稱,也可以用其預設的索引,從上到下依次為1、2…。每個section均有height和visible屬性,您可以在一定條件下使乙個section不可見。在section中可以放置各種報表控制項,其中rptlabel、rptimage、rptshape和rptline可以放在任意的section中,用於輸出各種文字、圖形及**線;rpttextbox只能放在細節中,一般用於繫結輸出datamemeber提供的資料字段;rptfunction只能被放置在分組註腳中,用於輸出使用各種內建函式計算出的合計、最大值、最小值、平均值、記數等等。上述報表控制項中常用公共屬性有用於控制位置及高度寬度的top、left、height、width和控制可見性的visible;其中rpttextbox還有datafield、datamember、dataformat及font屬性;其他屬性不再多說。

然後介紹一下我的使用經驗。一是對想控制的報表控制項按型別有規律的命名;二是用rptshape的矩形框做**線框,比用rptline畫框省事多了,只有斜線才使用rptline;三是報表標題及報表中的表頭文字、日期及頁碼用rptlabel,其中caption屬性支援轉義字元,%d為長格式日期,%d為短格式日期,%p為總頁數,%p為當前頁碼;四是對固定報表在設計視窗直接將報表控制項擺放到位,對於活報表,應首先考慮報表最大的情形,將足夠的控制項分別放置在不同區域,位置大小可以不必深究,然後在報表輸出前用vba**對所有控制項的屬性進行調整,包括位置、高度、寬度、字型、對齊方式、顯示格式、可見性等等,相應的對section也應根據情況調整其高度和可見性。

最後用乙個例項模板來說明其使用方法。

連線資料庫

with 資料環境.rs***mand名

if .state = adstateopen then .close

.source = sql語句

.open 開啟想輸出的資料庫資料項以便輸出

end with

with 報表名

.datasource=資料環境

.datamember=***mand名 這兩行也可固定設好而不必每次設定

設定頁表頭部分(rpttlabel…為報表控制項名)

.sections(2).controls("rptlabelpage").caption = "共%p頁第%p頁"

.sections(2).controls("rptlabeldate").caption = "列印日期:%d"

.sections(3).controls("rptlabel1").left=…

…設定細節部分(rptshapex、rpttextboxx為報表控制項名)

.sections(3).controls("rptshape1").left=…

.sections(3).controls("rptshape1").top=…

.sections(3).controls("rptshape1").height=…

.sections(3).controls("rptshape1").width=…

.sections(3).controls("rpttextbox1").datamember=***mand名

.sections(3).controls("rpttextbox1").datafield=欄位1

.sections(3).controls("rpttextbox1").font.name=…

….sections(3).controls("rptshapen").visible=false

.sections(3).controls("rpttextboxn").visible=false

…. sections(3).height=計算出的或固定的細節高度

動態調整報表標題(rptlabeltitle為報表標籤控制項名)

.sections(2). controls("rptlabeltitle").left=…

….sections(2). controls("rptlabeltitle").alignment=…

…調整完畢後

.show 或 .printreport

end with

這樣做的優點是報表設計時簡單,調整方便、隨意,只需更改一點**,而不必為了一點點的修改而費神的在設計視窗調整半天。

VB6中用DataReport做報表

vb6中用datareport做報表 首先介紹一下datareport物件的幾個常用屬性。一是datasource,用於設定乙個資料來源,通過該資料來源,資料使用者被繫結到乙個資料庫 二是datamember,從datasource提供的幾個資料成員中設定乙個特定的資料成員 三是leftmargin...

VB6中用DataReport做報表

首先介紹一下datareport物件的幾個常用屬性。一是datasource,用於設定乙個資料來源,通過該資料來源,資料使用者被繫結到乙個資料庫 二是datamember,從datasource提供的幾個資料成員中設定乙個特定的資料成員 三是leftmargin rightmargin topmar...

VB6中用DataReport做報表

vb6中用datareport做報表 首先介紹一下datareport物件的幾個常用屬性。一是datasource,用於設定乙個資料來源,通過該資料來源,資料使用者被繫結到乙個資料庫 二是datamember,從datasource提供的幾個資料成員中設定乙個特定的資料成員 三是leftmargin...