我在做报表时用到了quickrep的onneeddata事件,(已经Query1.first)  
procedure  tform1.QuickRep1NeedData(Sender:  TObject;  
   var  MoreData:  Boolean);  
begin  
       moredata:=true;  
       if  query1.eof  then  
       begin  
               moredata:=false;  
               exit;  
       end;  
       query1.next;  
end;  
但打印出来后总是与query1相连的表的第一行没有,而最后一行打两遍,如何解决?  

解决方案 »

  1.   

    moredate:=true;
    if not query1.eof then
    begin
      query1.next;
    end;
    moredate:=false;
      

  2.   

    我试过了,可还是不对,因为最后一句moredate:=false;使报表不显示任何数据。还有没有其它方法?谢谢了。
      

  3.   

    procedure  tform1.QuickRep1NeedData(Sender:  TObject;  
       var  MoreData:  Boolean);  
    begin  
           moredata:=true;  
           ......
           query1.next;  
           if  query1.eof  then  
           begin  
                   moredata:=false;  
           end;  
    end;  
      

  4.   

    谢谢。用LANGFEI的方法可以避免最后一行打印两遍,我已经解决,但第一行不打印的问题一直解决不了。怎么办?
      

  5.   

    你一开始的时候已经FIRST了,然后NEXT,肯定是没有第一条记录了!
      

  6.   

    //修改一下
    var
       vFlag : Boolean = False;
    procedure TForm1.QuickRep1StartPage(Sender: TCustomQuickRep);
    begin
       Query1.First;
       vFlag := True;
    end;procedure  tform1.QuickRep1NeedData(Sender:  TObject;  
       var  MoreData:  Boolean);  
    begin  
           moredata:=true;  
           if not vFlag then Query1.Next;
           vFlag := False;
           ......
           if query1.eof  then  
           begin  
                moredata:=false;  
           end;  
    end;