Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1257416
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-01-04 16:55:46



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库



--------------------------
盛大招聘.Net开发工程师

新闻:2008年开源软件10大胜利
导航:博客园首页  知识库  新闻  招聘  社区  小组  博问  网摘  找找看
阅读(1365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~