所谓临时表,就是由你在程序中创建,在程序结束时删除的数据表;
操作和一般的表没有区别,用sql语句
创建表:create table ...
删除表:drop table ...在大型数据库系统里可以使用select ...(字段列表) into 目标表名 from 源表名 where ...语法创建一个结构和原表相同的目标表,至于是不是临时表,随你意。
你创建的表名前可以加个"#"号,这种表在你断开与数据库的连接后会被自动删除。

解决方案 »

  1.   

    我用的是这种方法,但是在执行过程,出错,提示信息是该dataset是关闭的,我不知道为什么?
    哪位高手帮帮忙,我快急死了!!!谢谢!
    procedure TForeshow.Button1Click(Sender: TObject);
    var ADataSet:TDataSet;
    begin
       adataset:=tdataset.Create(self);
       with adataset.FieldDefs do
         begin
           add('name',ftstring,30,false);
           add('value',ftinteger,0,false);
         end;
       with datasource1 do
         begin
           dataset:=createtableinmemory(adataset.fielddefs);
           dataset.Open;
         end;
       dbgrid1.Columns[0].FieldName:='name';
       dbgrid1.Columns[1].FieldName:='value';
       datasource1.DataSet.Open;
       adataset.Append;
       adataset.FieldByName('name').asstring:='aaa';
       adataset.FieldByName('value').value:=10;
       adataset.Post;
       adataset.Free;
    end;function Tforeshow.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;
      

  2.   

    我已经解决了,加入这条语句就行了.
       Adataset:=datasource1.dataset;