你使用的是SQL数据库吗?
如果是:
你可以有两种创建方式:
创建临时表与永久表很相似,只不过临时表是存储在tempdb数据库中,当不再使用时,临时表会被自动删除,
两种类型: 局部和全局:局部的在表的名称前写“#”,它只能在创建它的会话内被访问。全局的是加上“##”,在创建后所有的用户都可以访问!当每一个对全局临时表引用断开后(计数为0),则释放(删除)临时表

解决方案 »

  1.   

    楼上的说的完全正确,如果是局部临时表用#+表名,如果是全局的就用##+表名
    例如
    Create table #temp
    (Name varchar(10),
     Tel varchar(13),
     COnstraint pk_Name primary key(Name))
    则创建了一个临时表
    或者通过
    select * into #temp  from TableName 则可以把TableName中的所有信息都放到临时表#temp中
      

  2.   

    我用query建立一个临时表,然后不能对其编辑,是什么原因呢with query1 do
       begin
          close;
          sql.clear;
          sql.add('select * into #tablename from tablename where 1=2');
          execsql;
          close;
          sql.clear;
          sql.add('select * from #tablename');
          open;
          append;    //这里出错,提示只读状态;修改R***LIVE属性后提示关键字出错
          edit;
       end;
    请教大侠们该如何解决
      

  3.   

    请问你使用的是ADO控件吗? 如果有属性R***LIVE 则是BDE数据集控件 呵呵,我没用过, 不知道行不行
    但是你上面的代码还是有问题呀
    其实 'select * into #tablename from tablename ’ 这已经将临时表创建好了,并且数据也全部导入进去了,如果是有条件的数据,则加入where 你怎么分成两步了 呵呵!
      

  4.   

    那建立临时表的话都要先访问一下服务器端吗?
    那比如有人在使用的话那我不是要等..等到什么时候啊.我是想在客户建立一个临时数据再发送到服务器端.
    就向(jiangnanandi())←这位大哥说的好象有效点儿....
    嗯.那那个列表类要怎么建的呀.大哥教教我.....!
      

  5.   

    就是那个建一个列表类
    大哥能不能给点儿代码啊.我刚学DELPHI.谢谢..
      

  6.   

    不知道你要的是不是这个!
    type type_name = record
         table_field1:string;
         table_field2:string;
         table_field3:string;
           .
           .
    end;
    这样就可以了吧
      

  7.   

    with query1 do
       begin
          close;
          sql.clear;
          sql.add('select * into #tablename from tablename where 1=2');
          execsql;//过了这句,这个临时表就释放了。你直接用个表,操作完后drop掉可以了。
          close;
          sql.clear;
          sql.add('select * from #tablename');
          open;
          append;          edit;
       end;
      

  8.   

    1、不同的数据库、不同的连接方式有不同的玩法
    2、如果是ADO方式连接SQL Server数据库(这是目前Delphi开发最常用的方式),那很简单了
       with TADOQuery.Create(Self) do
       try
         Connection:=你的数据库连接;
         SQL.Add('CREATE TABLE #TEMPTABLE(IDNO SMALLINT,IDNAME VARCHAR(8))');
         ExecSQL;
       finally
         Close;
         Free;
       end;
      

  9.   

    建一个Tobject类
      Type
        TNote=Class(Tobject)
          nm:stirng;
          se:string;
          .....
       end
    再建一个listobject类
        TNoteInfo=Class(TObjectList)
    然后在 TNoteInfo类中 处理 添加删除 等对TNote类的操作
    有不明白的可以联系我 QQ群10493623
      

  10.   

    with  TADOQuery.Create(Self)  do  
         try  
             Connection:=你的数据库连接;  
             SQL.Add('CREATE  TABLE  #TEMPTABLE(IDNO  SMALLINT,IDNAME  VARCHAR(8))');  
             ExecSQL;  
         finally  
             Close;  
             Free;  
         end; 
    象这种方法我感觉不好.因为他是在数据库中生成了一张表.
    我想要创建一个内存表要怎么实现哦.
    jiangnanandi() 回复的说建两个类我是会的.但是要实现添加.修改多条记录用这个方法行嘛?
      

  11.   

    To: xiaobudian01()
    玩笑了,这个生成的是临时表,在你的数据库中是没有生成表的
    在SQL Server中,所有临时表均保存在tempdb数据库中,这是系统库,当你的连接断开的时候,这个表会自动删除,也可以手工删除。
    如果是纯内存运行,那是变量表,不但很多数据库还不支持变量表,Delphi前台多数情况下也是无法直接添加的
    至于在Delphi端的内存中,那不是普通意义上的数据库表了如果是其它模式的临时表,这招数可就多了,至少有10种以上的方法!
      

  12.   

    这个问题个人认为对于象我这样的初学者是很有用的.
    with  TADOQuery.Create(Self)  do  
         try  
             Connection:=你的数据库连接;  
             SQL.Add('CREATE  TABLE  #TEMPTABLE(IDNO  SMALLINT,IDNAME  VARCHAR(8))');  
             ExecSQL;  
         finally  
             Close;  
             Free;  
         end; 
    上面这一段我试过的.我用ACCESS数据库.不能用的.说'#'地方有错.然后我删了'#'就可以在数据库中建一张表了.
      

  13.   

    Access数据库没有临时表这个东西,所以你删除#把本质的东西搞错了,临时表在Access中可以通过视图来解决SQL.Add('CREATE VIEW TEMPTABLE(IDNO  SMALLINT,IDNAME  VARCHAR(8))');这个在不同的数据库中是不同的,在FoxPro中又是另外一种东西。
      

  14.   

    Append之后已在edit状态了,你还edit干嘛呢?
    有什么用啊/
      

  15.   

    哦那我现在是用ACCESS数据库的.现在在做一个产品入库问题
    要次性再入多条记录到一个DBGRID中然后还可以修改他们的入库数量和入库价格.再写入到数据库中的.象这个过程要怎么样实现呢?我以为是开临时表.但是上面的方法一样是在ACCESS中建了一个表...感觉这个方法不可行.
    然后我又查了查那个clientdataset控件是不是可以暂时存入多条记录的吗?
    Hank大哥如果在的话就回复下下.