原創(chuàng)|其它|編輯:郝浩|2012-11-06 15:57:19.000|閱讀 581 次
概述:實(shí)際應(yīng)用中常常需要打印一個(gè)不確定欄數(shù)的分欄報(bào)表或欄數(shù)在執(zhí)行階段會(huì)改變。例如在開(kāi)發(fā)一個(gè)可能需要打印一個(gè)數(shù)據(jù)表數(shù)據(jù)的數(shù)據(jù)庫(kù)編輯器中就需要它。這種情況報(bào)表只能使用程序代碼創(chuàng)建,但FastReport提供了一種更簡(jiǎn)單的方法來(lái)解決這個(gè)難題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
實(shí)際應(yīng)用中常常需要打印一個(gè)不確定欄數(shù)的分欄報(bào)表或欄數(shù)在執(zhí)行階段會(huì)改變。例如在開(kāi)發(fā)一個(gè)可能需要打印一個(gè)數(shù)據(jù)表數(shù)據(jù)的數(shù)據(jù)庫(kù)編輯器中就需要它。這種情況報(bào)表只能使用程序代碼創(chuàng)建,但提供了一種更簡(jiǎn)單的方法來(lái)解決這個(gè)難題。
就是使用交叉表來(lái)達(dá)到這個(gè)目的。這種報(bào)表的與眾不同的特點(diǎn)就是在欄中打印數(shù)據(jù)。在此之前不需要知道分欄數(shù)。特別是這種類(lèi)型的報(bào)表交叉部分是垂直放置,而不是水平的。這些區(qū)域的“Text”對(duì)象被放在水平(例如“主項(xiàng)數(shù)據(jù)”)和垂直(例如“交叉表”)區(qū)域的交叉點(diǎn)上。這種情況報(bào)表通過(guò)下面的原理創(chuàng)建:對(duì)水平區(qū)域數(shù)據(jù)源中的所有記錄全部被正確從垂直區(qū)域數(shù)據(jù)源的記錄中查阿找并指定。
因而,對(duì)于“主項(xiàng)數(shù)據(jù)”打印數(shù)據(jù)源數(shù)據(jù)表的內(nèi)容時(shí)包含的是數(shù)據(jù)表自身,各個(gè)單獨(dú)記錄的字段列表是“交叉表”區(qū)域的數(shù)據(jù)源。
一個(gè)交叉表報(bào)表的簡(jiǎn)單例子可以從PRNTBL1子目錄中找到。從這個(gè)例子中看到的報(bào)表在這個(gè)圖象中顯示。
這個(gè)圖象顯示“Text”對(duì)象放置在“主項(xiàng)數(shù)據(jù)”和“交叉表”區(qū)域的交叉點(diǎn)上,分別屬于“主項(xiàng)數(shù)據(jù)”和“交叉表”區(qū)域。如果報(bào)表使用CUSTOMER.DB中的記錄,就將它作為“主項(xiàng)數(shù)據(jù)”的數(shù)據(jù)源。報(bào)表中的欄目數(shù)由兩個(gè)TfrUserDataset虛擬數(shù)據(jù)源,將CUSTOMER.DB的字段數(shù)與“記錄”數(shù)連接。字段的值在TfrReport 對(duì)象的OnGetValue事件中設(shè)定:
procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant);
begin
if ParName = 'Cell' then
ParValue := Table1.Fields[frUserDataset1.RecNo].Value;
if ParName = 'Header' then
ParValue := Table1.Fields[frUserDataset2.RecNo].FieldName;
end;
當(dāng)這個(gè)例子執(zhí)行時(shí),CUSTOMER.DB的所有記錄將被預(yù)覽。下面就是預(yù)覽看到的圖象:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)