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