如何将查询出来的结果插入到一张新表?

时间:2022-10-02 00:48:57
执行query1.SQL.Add('insert into "e:\abc.dbf" select * from "h:\abc.dbf"');为何报错:Error creating cursor handle。 急急急。

6 个解决方案

#1


你的新表是早就有了的新的空表還是想生成一個新表呢,如果是生成一個新表肯定有問題。生成表查詢是這樣寫的
select *
into anothertable
from table
where 條件

#2


新表是不存在的,要自己生成。如何实现?

#3


自大生生成一个表

create table


#4


up

#5


用两个ADODataSet搞定
第一个用来查询原表符合条件的记录
第二个用来连接新表写入数据

如果你是用BDE,就用TTable和TQuery搞定它

ADODataSet1.DisableControls;
  ADODataSet2.DisableControls;
  try
    ADODataSet1.First;
    while not ADODataSet1.Eof do
      begin
        ADODataSet2.Insert;
        ADODataSet2.FieldByName('name').Value:=ADODataSet1.FieldByName('name').Value;
        ADODataSet2.FieldByName('work').Value:=ADODataSet1.FieldByName('work').Value;
        ADODataSet2.Post;
        ADODataSet1.Next;
      end;
  finally
    ADODataSet1.EnableControls;
    ADODataSet2.EnableControls;
  end;

#6


如果在查询的同时要生产表
select * into new_table[#new_temp_table] from old_table;
如果已经有了目的表
insert into table2[(fieldnameList)] select * from table1(此时查询的字段一定要和fieldnamelist相匹配)

#1


你的新表是早就有了的新的空表還是想生成一個新表呢,如果是生成一個新表肯定有問題。生成表查詢是這樣寫的
select *
into anothertable
from table
where 條件

#2


新表是不存在的,要自己生成。如何实现?

#3


自大生生成一个表

create table


#4


up

#5


用两个ADODataSet搞定
第一个用来查询原表符合条件的记录
第二个用来连接新表写入数据

如果你是用BDE,就用TTable和TQuery搞定它

ADODataSet1.DisableControls;
  ADODataSet2.DisableControls;
  try
    ADODataSet1.First;
    while not ADODataSet1.Eof do
      begin
        ADODataSet2.Insert;
        ADODataSet2.FieldByName('name').Value:=ADODataSet1.FieldByName('name').Value;
        ADODataSet2.FieldByName('work').Value:=ADODataSet1.FieldByName('work').Value;
        ADODataSet2.Post;
        ADODataSet1.Next;
      end;
  finally
    ADODataSet1.EnableControls;
    ADODataSet2.EnableControls;
  end;

#6


如果在查询的同时要生产表
select * into new_table[#new_temp_table] from old_table;
如果已经有了目的表
insert into table2[(fieldnameList)] select * from table1(此时查询的字段一定要和fieldnamelist相匹配)