高分求解FastReports問題


該教程看過多次,但總是實現不了,主要是打印空行部分。

http://dev.yesky.com/SoftChannel/72342371928440832/20040425/1791408.shtml

請各位高手試試,有沒有用根據本教程實現的代碼,或者用FastReports3.0以上版本實現的代碼?

14 个解决方案

#1


沒用過,我只用report machine

#2


report machine能實現嗎?在試過在打印之前,在數據庫表里進行判斷,
當記錄數 MOD 6(最多的行數)不為0時,就往數據表加多不足的空行,
這樣基本可以實現,但是這樣沒有利用到報表設計器,在設計時比較煩麻。

#3


打印空行問題?我沒有試過你給的鏈接里那種腳本的方法。
給你說說我的方法吧。
把你要打印空行的Band指向虛擬數據集,RecCount設為6,上面放上一堆空白的Memo,好,空行出來了吧?千萬記得把這么Memo設為透明D。
然后,在這個Band上放一個子報表,沒錯,就是讓子報表覆蓋這些空白的Memo。
然后在子報表里面放你要顯示的數據,OK,數據也出來了。

報表生成的時候,會首先就生成6行空白行,然后再根據你的數據庫記錄總數,生成數據行。

嘿嘿,給我分吧,這馬甲剛上線,缺錢呢。

#4


樓上兄弟的妙招啊!只是沒有試用過。

#5


拉幾個空白的行. 然后判斷數據集的記錄數

band.visible := RecNO < 4;
band2.visible := RecNO < 3;
..

#6


用子Band,一個一個連,然后上面代碼

#7


你雙擊一下Band,右下角不是有個記錄數?默認是1,就是這個了,把它改成6。

===========================================================
編號: 2 發送者 lfcq 發送時間 2004-11-24 9:24:04 刪除  回復  
內容 請問這個是指??
把你要打印空行的Band指向虛擬數據集,RecCount設為6,
怎么找不到reccount?有源碼嗎?分......一定給
先謝了! 
===========================================================

#8


我試過,可以留空行,但是這樣仍然無法完成打印表格的功能.
    如:當數據表記錄總數為4或者10時,表格的行數為6,這時就是
要打印4行數據為空白的表格.而您上面的方法好像實現不了.

#9


哦,終於明白你要做什么效果了,每頁頁尾不足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居然關閉可用分轉贈,誠彼娘之非悅。

#10


清楚,我試試:)
謝謝!
還有一個小問題,當打印了6行后,如何進行換頁.
在新的頁面打印后續的數據?

#11


d

#12


【換頁】
在主數據項Band的腳本里面寫
  if [LINE#] > 6 then
    newpage;

#13


換頁的OK了,但是補空白行的不行.
放一個頁腳Band,在頁腳Band的腳本里面寫下面這段腳本:
        ShowBand(child);
一放到頁腳,會出現錯誤!
真是痛苦......

#14


使用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;

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com