該教程看過多次,但總是實現不了,主要是打印空行部分。
http://dev.yesky.com/SoftChannel/72342371928440832/20040425/1791408.shtml
請各位高手試試,有沒有用根據本教程實現的代碼,或者用FastReports3.0以上版本實現的代碼?
14 个解决方案
report machine能實現嗎?在試過在打印之前,在數據庫表里進行判斷,
當記錄數 MOD 6(最多的行數)不為0時,就往數據表加多不足的空行,
這樣基本可以實現,但是這樣沒有利用到報表設計器,在設計時比較煩麻。
打印空行問題?我沒有試過你給的鏈接里那種腳本的方法。
給你說說我的方法吧。
把你要打印空行的Band指向虛擬數據集,RecCount設為6,上面放上一堆空白的Memo,好,空行出來了吧?千萬記得把這么Memo設為透明D。
然后,在這個Band上放一個子報表,沒錯,就是讓子報表覆蓋這些空白的Memo。
然后在子報表里面放你要顯示的數據,OK,數據也出來了。
報表生成的時候,會首先就生成6行空白行,然后再根據你的數據庫記錄總數,生成數據行。
嘿嘿,給我分吧,這馬甲剛上線,缺錢呢。
你雙擊一下Band,右下角不是有個記錄數?默認是1,就是這個了,把它改成6。
===========================================================
編號: 2 發送者 lfcq 發送時間 2004-11-24 9:24:04 刪除 回復
內容 請問這個是指??
把你要打印空行的Band指向虛擬數據集,RecCount設為6,
怎么找不到reccount?有源碼嗎?分......一定給
先謝了!
===========================================================
我試過,可以留空行,但是這樣仍然無法完成打印表格的功能.
如:當數據表記錄總數為4或者10時,表格的行數為6,這時就是
要打印4行數據為空白的表格.而您上面的方法好像實現不了.
哦,終於明白你要做什么效果了,每頁頁尾不足6行的補空白行是吧?
說什么打印空行....我以為你要每行主項數據后面要放空行....-_-# 主啊,原諒我吧。
那就用腳本搞定就可以了
(1)在主項數據Band的腳本里面用個臨時變量保存你主項數據的LINE#,比如:LineNo := [LINE#];
(2)然后放個子Band在主項數據Band后面,隨便給個名稱叫Child吧,上面放些空白Memo。
(3)放一個頁腳Band,在頁腳Band的腳本里面寫下面這段腳本:
LineNo := LineNo Mod 6;
if LineNo > 0 then
for I := 0 to (6-LineNo-1) do
ShowBand(child);
說D很清楚了吧,嗯,來來來,give me 分,該死的CSDN居然關閉可用分轉贈,誠彼娘之非悅。
清楚,我試試:)
謝謝!
還有一個小問題,當打印了6行后,如何進行換頁.
在新的頁面打印后續的數據?
【換頁】
在主數據項Band的腳本里面寫
if [LINE#] > 6 then
newpage;
換頁的OK了,但是補空白行的不行.
放一個頁腳Band,在頁腳Band的腳本里面寫下面這段腳本:
ShowBand(child);
一放到頁腳,會出現錯誤!
真是痛苦......
使用fastreport3.0,我在主項數據BAND的AFTERPRINT下可以實現.
但問題是需要傳入數據表記錄數總數及第頁打印的記錄數.我在程序中總無法實現.
yeliming(重返光榮) ,請再幫我相想辦法?
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var lin,linecount,rcount:integer;
begin
lin:=<line#>;
linecount:=7;
rcount:=30;
if <line#> =rcount then//傳入記錄數
begin
while lin mod linecount <>0 do
begin
Engine.showband(child1);
lin:=lin+1;
end;
end;
if (<Line#> -1 <>0) and ((<Line#>) mod linecount =0) then
begin
Engine.newpage;
end;
end;