procedure TForm1.Button1Click(Sender: TObject);
var
  FileNames: string;
begin
  Table1.Close;
  Table1.FieldDefs.Assign(Query1.FieldDefs);
  Table1.TableName := 'NewTable';
  Table1.CreateTable;  Table1.Open;
  Query1.First;
  FileNames := StringReplace(Trim(Query1.FieldList.Text), #13#10, ';', [rfReplaceAll]);
  while not Query1.Eof do begin
    Table1.Append;
    Table1[FileNames] := Query1[FileNames];
    Table1.Post;
    Query1.Next;
  end;
end;

解决方案 »

  1.   

    楼上的朋友:
      你的程序我试过了,但运行后提示query1中的字段找不到。
      我在程序中有一个菜单项可实现改变DBgrid中显示字段的顺序及将DBgrid中的一些字段设置为不可见(将其列的visible设为false).这样DBGRID中显示的内容就同query1中的内容不同了。你有办法只是根据dbgrid中的内容来创建数据表吗? 
      

  2.   

    请教:table1[filenames]:=query1[filenames]这句是什么意思?它能实现什么功能?
      

  3.   

    table1['field1;field2;field3']:=query1['field1;field2;field3'];
    ///////相当于
    table1['field1']:=query1['field1'];
    table1['field2']:=query1['field2'];
    table1['field3']:=query1['field3'];
    ///////相当于
    table1.FieldByName('field1').Value:=query1.FieldByName('field1').Value;
    table1.FieldByName('field2').Value:=query1.FieldByName('field2').Value;
    table1.FieldByName('field3').Value:=query1.FieldByName('field3').Value;
      

  4.   

    zswang(伴水)(需要充充电) :
       谢谢你的帮助!但是你的程序和我的要求不大一样,你能实现我的要求吗?
       你的程序我试过了,但运行后提示query1中的字段找不到。
      我在程序中有一个菜单项可实现改变DBgrid中显示字段的顺序及将DBgrid中的一些字段设置为不可见(将其列的visible设为false).这样DBGRID中显示的内容就同query1中的内容不同了。你有办法只是根据dbgrid中的内容来创建数据表吗?