使用adoquery取会数据在dbgrid显示后,如何统计返回了多数条记录?并把返回的记录导出到excel?thx

解决方案 »

  1.   

    recordcount,导出到excel就直接用ADO操作excel表就行了
      

  2.   

    2001Wind
    麻烦讲详细点,菜鸟谢谢!
      

  3.   

    adoquery.recordcount
    导出到excel就直接用ADO操作excel表就行了
    请参照李维的ado/mts/com+那本书
      

  4.   

    在bcb里看到过用ole的例子,那在delphi里不能这么做吗。
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls,comobj;type
      TForm1 = class(TForm)
        Button1: TButton;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        ADOTable1: TADOTable;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure dbgridtoexcel(dbgrid1:tdbgrid);
    var
        exl:variant;
        i,j,n:integer;
    begin
        exl:=CreateOLEObject('Excel.Application');
        exl.WorkBooks.Add;
        exl.Visible:=true;
    //标题
        for i:=1 to dbgrid1.Columns.Count do
        begin
            exl.Cells[1,i].value:=dbgrid1.Columns[i-1].Title.Caption;
        end;
    //数据
        dbgrid1.DataSource.DataSet.First;
        n:=2;
        while not dbgrid1.DataSource.DataSet.Eof do
        begin
            for i:=1 to dbgrid1.FieldCount do
            begin
                exl.Cells[n,i].value:=dbgrid1.Fields[i-1].AsString;
            end;
            inc(n);
            dbgrid1.DataSource.DataSet.Next;
        end;
        exl.Cells[n,1].value:='合计记录:'+inttostr(dbgrid1.DataSource.DataSet.RecordCount)+'条';
    end;
    procedure TForm1.Button1Click(Sender: TObject);begin
     dbgridtoexcel(dbgrid1);
    end;end.
      

  6.   

    用OLE的办法是标准的,但是在牺牲标准和对字符集/Unicode支持的前提下可以同过把DBGrid的每一行都给一个TStrings来提高效率!
    比如DBGrid的某一行 1  2   3  共三列
    一个TStrings a 
    a.add('1'#9+'2'+#9+'3');