从一个表中查询插入另一个表中: insert into tmp_tal select * from table;
这两个表不在一个库中能够执行吗?我用use 库后还是不可以!
那你可以这样,用ClientDataSet创建一个内存表,从一个库中查询后存入此内存表,然后在插入到另外一个表,创建内存表的代码如下: function TfrmMain.CreateTableInMemory(const AFieldDefs: TFieldDefs): TDataSet; var tmpTable: TClientDataSet; begin tmpTable := nil; Result := nil; if AFieldDefs <> nil then begin try tmpTable := TClientDataSet.Create(nil); tmpTable.FieldDefs.Assign(AFieldDefs); tmpTable.CreateDataSet; Result := (tmpTable as TDataSet); except if tmpTable <> nil then FreeAndNil(tmpTable); Result := nil; Raise; end; end; end;
insert into tmp_tal select * from table;
function TfrmMain.CreateTableInMemory(const AFieldDefs: TFieldDefs): TDataSet;
var tmpTable: TClientDataSet;
begin
tmpTable := nil;
Result := nil;
if AFieldDefs <> nil then
begin
try
tmpTable := TClientDataSet.Create(nil);
tmpTable.FieldDefs.Assign(AFieldDefs);
tmpTable.CreateDataSet;
Result := (tmpTable as TDataSet);
except
if tmpTable <> nil then FreeAndNil(tmpTable);
Result := nil;
Raise;
end;
end;
end;
ADataSet := TDataSet.Create(nil);
with ADataSet.FieldDefs do
begin
Add('Field1', ftString, 30);
Add('Field2', ftString, 100);
Add('Field3', ftString, 20);
Add('Field4', ftString, 100);
Add('Field5', ftString, 100);
Add('Field6', ftString, 100);
Add('Field7', ftString, 100);
end;
DataSource1.DataSet := CreateTableInMemory(ADataSet.FieldDefs);