现有一DBGRID显示的记录是从存储过程里读出来的,我想把这些记录重新写入一临时表,请问怎么办?

解决方案 »

  1.   

    逐条写入:
    table1.first;
    while not table1.eof do
    begin
      table2.fields[0].asstring := table1.fields[0].asstring;
      table2.fields[1].asstring := table1.fields[1].asstring;
      table2.fields[2].asstring := table1.fields[2].asstring;
                                 .
                                 .
                                 .
                                 .
                                 .
      table2.fields[0].asstring := table1.fields[0].asstring;
      table1.next;  
    end;
      

  2.   

    insert into #temptable
    select(你的数据集)
      

  3.   

    insert into #temptable
    select(你的数据集)
    =====================
    他所说的数据集是什么啊?
      

  4.   

    我这样写,为什么不对呢?
    with adodm.query_jkcgj do
     begin
     screen.Cursor := crHourGlass;
       clOSE;
       sql.Clear;
      
      sql.add('CREATE TABLE #TTABLE');
      SQL.ADD(' (COMPONENT VARCHAR(10),');
      SQL.ADD(' COMP_DESC VARCHAR(60),');
      SQL.ADD(' BUYR VARCHAR(6),');
      SQL.ADD(' PT_USE VARCHAR(10),');
      SQL.ADD(' SEQN VARCHAR(6),');
      SQL.ADD(' QUANTITY FLOAT,');
      SQL.ADD(' RUN_LT VARCHAR(6),');
      SQL.ADD(' QTY_BY_LOC FLOAT,');
      SQL.ADD(' ALLOCATION FLOAT,');
      SQL.ADD(' INSP_QTY FLOAT,');
      SQL.ADD(' ON_ORD_QTY FLOAT )');
      EXECSQL;
     
        FORM_JKC.DBGrid1.DataSource.DataSet.First;
     // ADODM.QUERY_JKCGJ.DataSource.DataSet.First;
       While Not (FORM_JKC.DBGrid1.DataSource.DataSet.Eof) do
       begin
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[0].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[0].AsString;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[1].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[1].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[2].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[2].AsString;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[3].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[3].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[4].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[4].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[5].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[5].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[6].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[6].AsString   ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[7].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[7].AsString    ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[8].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[8].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[9].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[9].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[10].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[10].AsString ;    FORM_JKC.DBGrid1.DataSource.DataSet.Next;
       // ADODM.QUERY_JKCGJ.DataSource.DataSet.NEXT;
        end;
      end;
      screen.Cursor := crDefault;
      

  5.   

    insert into #temptable
    select(你的数据集)
    =====================
    他所说的数据集是什么啊?
    已经很正确了
    你的数据集就是指你DBGRID里显示的内容(不要告诉我你不知道这些内容是哪儿来的~~)
    可以结帖了,你试了不行再说吧~
      

  6.   

    insert into #temptable
    select(你的数据集)
    =====================
    他所说的数据集是什么啊?
    已经很正确了
    你的数据集就是指你DBGRID里显示的内容(不要告诉我你不知道这些内容是哪儿来的~~)
    可以结帖了,你试了不行再说吧~=================
    不好意思,我真是不知道“你的数据集”代码怎么写?给点提示啊,难道是写成:
    dbgrid1.datasoruce.dataset?
      

  7.   

    理解为sql语句:
                 insert into 临时表
                 select * from 表
      

  8.   

    可能上面两位朋友没理解我的意思,我的DBGRID是从存储过程里读出的,然后要把这些记录写如临时表,
      

  9.   

    1.根据DBGrid列数动态创建临时表
    2.循环处理DBGrid,一条条写入临时表
      

  10.   

    1.根据DBGrid列数动态创建临时表
    2.循环处理DBGrid,一条条写入临时表
    =====================
    我是按这思路写的啊,但运行总提示不对
    我这样写,为什么不对呢?
    with adodm.query_jkcgj do
     begin
     screen.Cursor := crHourGlass;
       clOSE;
       sql.Clear;
      
      sql.add('CREATE TABLE #TTABLE');
      SQL.ADD(' (COMPONENT VARCHAR(10),');
      SQL.ADD(' COMP_DESC VARCHAR(60),');
      SQL.ADD(' BUYR VARCHAR(6),');
      SQL.ADD(' PT_USE VARCHAR(10),');
      SQL.ADD(' SEQN VARCHAR(6),');
      SQL.ADD(' QUANTITY FLOAT,');
      SQL.ADD(' RUN_LT VARCHAR(6),');
      SQL.ADD(' QTY_BY_LOC FLOAT,');
      SQL.ADD(' ALLOCATION FLOAT,');
      SQL.ADD(' INSP_QTY FLOAT,');
      SQL.ADD(' ON_ORD_QTY FLOAT )');
      EXECSQL;
     
        FORM_JKC.DBGrid1.DataSource.DataSet.First;
     // ADODM.QUERY_JKCGJ.DataSource.DataSet.First;
       While Not (FORM_JKC.DBGrid1.DataSource.DataSet.Eof) do
       begin
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[0].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[0].AsString;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[1].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[1].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[2].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[2].AsString;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[3].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[3].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[4].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[4].AsString ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[5].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[5].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[6].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[6].AsString   ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[7].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[7].AsString    ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[8].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[8].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[9].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[9].AsString  ;
         ADODM.QUERY_JKCGJ.DataSource.DataSet.Fields[10].AsString:=FORM_JKC.DBGrid1.DataSource.DataSet.Fields[10].AsString ;    FORM_JKC.DBGrid1.DataSource.DataSet.Next;
       // ADODM.QUERY_JKCGJ.DataSource.DataSet.NEXT;
        end;
      end;
      screen.Cursor := crDefault;