線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2187
推到 Plurk!
推到 Facebook!

FR3 碰到 Stack overflow 問題

 
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-07 10:45:04 IP:60.248.xxx.xxx 未訂閱

因為使用者要求報表中的明細表格必須印滿, 所以在明細下加一個 Child Band

然後在 Foot Band BeforePrint 加入如下的

procedure PageFooter1OnBeforePrint(Sender: TfrxComponent);
begin
whi
Engine.ShowBand(child1);
end;

雖然只顯示一次, 可是報表跑一段時間後出現 Stack Overflow 的錯誤, 然後程式就自殺了.

原來希望補滿空白的 Script 如下

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
begin
while Engine.freespace >20 do
begin
Engine.showband(child1)
end;
end;

------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-09 15:01:21 IP:220.140.xxx.xxx 未訂閱
試試看
[code]

var
PageLine: integer; //在現在頁列印到第幾行
PageMaxRow: integer=15; //設定每頁列數

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := mod PageMaxRow;
if (PageLine = 1) and ( > 1) then
Engine.newpage;
end;

//Footer1高度設為0

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRow do begin
i := i 1;
Engine.ShowBand(Child1); //印空白表格
end;
end;

begin
end.

[/code]
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-10 12:33:58 IP:60.248.xxx.xxx 未訂閱

感謝您的回覆

此種處理方式我也有想過,網路上也有相關的程式碼,利用程式指定固定的資料筆數

不過很可惜的是我的 Detail Band 是會隨著內容的多寡而伸展的

所以每頁的列印數量會有所不同而無法使用此一技巧。

目前光是在 Footer Band BeforePrint 處理顯示一個 Child Band 就會出問題

更別說要測試判定 FreeSpace 的高度的程式部份

現在還發現有人提報在 FR3 執行到 Footer Band 時 FreeSpace 就被歸零了的狀況。

真是一波多折

------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-10 12:39:47 IP:60.248.xxx.xxx 未訂閱

另外單純從程式的角度來看

該技巧也是在 Footer Band BeforePrint 中

Engine.ShowBand(Child1); 迴圈來處理

我的狀況是只執行一次 Engine.ShowBand(Child1); 就會碰到 Stack overflow 的問題.

就算是我的 Detail Band 不會伸展也是一樣會出問題.

------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-12 15:19:10 IP:220.140.xxx.xxx 未訂閱
我試了下列的程式碼真的有問題(使用3.23),以前不會呀,這一定是bug了。
===================引 用 文 章===================

另外單純從程式的角度來看

該技巧也是在 Footer Band BeforePrint 中

Engine.ShowBand(Child1); 迴圈來處理

我的狀況是只執行一次 Engine.ShowBand(Child1); 就會碰到 Stack overflow 的問題.

就算是我的 Detail Band 不會伸展也是一樣會出問題.

chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-12 15:19:51 IP:220.140.xxx.xxx 未訂閱
我試了下列的程式碼真的有問題(使用3.23),以前不會呀,這一定是bug了。
===================引 用 文 章===================

另外單純從程式的角度來看

該技巧也是在 Footer Band BeforePrint 中

Engine.ShowBand(Child1); 迴圈來處理

我的狀況是只執行一次 Engine.ShowBand(Child1); 就會碰到 Stack overflow 的問題.

就算是我的 Detail Band 不會伸展也是一樣會出問題.

系統時間:2024-04-28 12:58:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!