quickreport的分栏打印,我快要疯掉了,大家帮帮我吧! ( 积分: 150 )

  • 主题发起人 主题发起人 kylejiang
  • 开始时间 开始时间
K

kylejiang

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我要实现报表的部分分栏打印。
要求报表的格式
Name:欧阳 address:南极1345号 position:世外高人 (这个部分不用分栏)
------------------------------------
图一 图二 (只要这部分分成两栏)
图三 图四
-----------------------------------
评语: (memo)
---------------------
做了一个简单例子,虽然可以分栏,但是出现最后一个记录无法显示。不知何故。现在把过程叙述一些:
平台:win2000 pro
delphi 7
quickreport 4.5
--------------------------------
先在form2上放入quickreport1 ,qrlabel1,qrlabel2 ,Table1,并设table的database为DBDemo,tablename为country 。
在form2的时间上添加如下代码:
 procedure TForm2.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
  var
   I: integer;
  begin

   MoreData := True;
   for I:= 1 to 2do

   begin

    if Table1.Eof then
Break;
    case I of
     1: QRLabel1.Caption := Table1.FieldByName(′Name′).AsString;
     2: QRLabel2.Caption := Table1.FieldByName(′Name′).AsString;
    end;
    Table1.Next;
   end;

   if Table1.Eof then
MoreData := False;
  end;

  procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
   var PrintReport: Boolean);
  begin

   Table1.First;
  end;

在form1上添加一个button1,
添加事件代码为
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.QuickRep1.Preview ;
end;
--------------------
结果就是前文所说的记录不能全部显示。
 
现在我要实现报表的部分分栏打印。
要求报表的格式
Name:欧阳 address:南极1345号 position:世外高人 (这个部分不用分栏)
------------------------------------
图一 图二 (只要这部分分成两栏)
图三 图四
-----------------------------------
评语: (memo)
---------------------
做了一个简单例子,虽然可以分栏,但是出现最后一个记录无法显示。不知何故。现在把过程叙述一些:
平台:win2000 pro
delphi 7
quickreport 4.5
--------------------------------
先在form2上放入quickreport1 ,qrlabel1,qrlabel2 ,Table1,并设table的database为DBDemo,tablename为country 。
在form2的时间上添加如下代码:
 procedure TForm2.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
  var
   I: integer;
  begin

   MoreData := True;
   for I:= 1 to 2do

   begin

    if Table1.Eof then
Break;
    case I of
     1: QRLabel1.Caption := Table1.FieldByName(′Name′).AsString;
     2: QRLabel2.Caption := Table1.FieldByName(′Name′).AsString;
    end;
    Table1.Next;
   end;

   if Table1.Eof then
MoreData := False;
  end;

  procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
   var PrintReport: Boolean);
  begin

   Table1.First;
  end;

在form1上添加一个button1,
添加事件代码为
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.QuickRep1.Preview ;
end;
--------------------
结果就是前文所说的记录不能全部显示。
 
从你的代码看没什么异样,怪事!
 
的确是怪事啊。
 
如果把Table1.Next;改成 Table1.FindNext:倒是可以显示出来全部的数据,但是,但是:最后一条记录会一直打印。。。不知道如何停止:(
总之,我觉得应该是在对table数据库的操作上,我们没有做好。。。
 
我终于知道问题所在了。。不知道各位怎么解决的。。我的解决方式是:
if Table1.Eof then
MoreData := False;该为:
else
MoreData := False;就可以了。
 
后退
顶部