delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
FastReport中,打印选中的记录 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061221203712206.html
ADOquery,select   *   from   mytable  
  数据放在DbGridEh中,现在DbGridEh中的纪录有个选择字段,可以选中,如何FastReport只打印选中的纪录呢?(没有保存)

真是越省你事越懒了  
  你不会想点下鼠标出个程序吧...

顶,刚好我也遇到这个问题

呵呵,这个不大好实现

把选中的记录传给ADOX,再将ADOX传给FR。这样行啊。只是多了一层。

创建一个内存表,把选中的追加到内存表中,再传给FR。  
  //内存表建立:  
  function   CreateTableInMemory(const   AFieldDefs:TFieldDefs):TDataSet;  
  var  
    TempTable:TClientDataSet;  
  begin  
    TempTable:=nil;  
    Result:=nil;  
    if   AFieldDefs<>nil   then  
      begin  
        try  
          TempTable:=TClientDataSet.Create(Application);  
          TempTable.FieldDefs.Assign(AFieldDefs);  
          TempTable.CreateDataSet;  
          Result:=(TempTable   as   TDataSet);  
        except  
          if   TempTable<>nil   then   TempTable.Free;  
            Result:=nil;  
          raise;  
        end  
      end  
  end;  
   
  //打印:  
  procedure   TFrmMain.PrintBtnClick(Sender:   TObject);  
  var  
    ADataSet:TDataSet;  
    Over1,Reset1,Spare1:real;  
    Res:SearR;  
  begin  
   
    ADataSet:=TDataSet.Create(Application);  
    with   ADataSet.FieldDefs   do  
    begin  
      Add('Empid,ftString,10,False);  
      Add('EmpName',ftString,10,False);  
      Add('OverTime,ftFloat,0,False);  
      Add('Date',ftDate,0,False);  
    end;  
   
    with   RmDBDataSet1,Search   do  
    begin  
      DataSet:=CreateTableInMemory(ADataSet.FieldDefs);  
      DataSet.Open;  
      //在这里循环追加你DBGridEh选中的记录  
        begin  
              DataSet.InsertRecord([FieldByName('Empid').AsString,  
                                                          FieldByName('EmpName').AsString,  
                                                          Res.OverTime,  
                                                          Date  
                                                          ]);  
        end;  
    end;  
    ADataSet.Free;  
    Ds1.DataSet:=RmDBDataSet1.DataSet;   //传递给DataSource,也就是FR对应的  
  end;  
  //以上仅为参考,此程序需要Midas.dll库

posted on 2009-01-04 16:53 delphi2007 阅读(468) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。