path:='E:\新建文件夹\';
  Table1.DatabaseName:='E:\新建文件夹;
  Table2.DatabaseName:='E:\新建文件夹1;
  Table2.TableName:='0.dbf';
  Table2.Active:=true;
  FindFirst(path+'*.dbf',faDirectory,FS);
  while FindNext(FS)=0 do
  begin
    if FS.Name<>'0.dbf' then
    begin
      Table1.TableName:=FS.Name;
      Table1.Active:=true;
      Table1.First;
      Table2.Last;
      while not Table1.Eof do
      begin
        with Table2 do
        begin
          Insert;
          FieldByName('a').Value:=Table1.Fields[0].Value;
          FieldByName('b').Value:=Table1.Fields[1].Value;
          FieldByName('c').Value:=Table1.Fields[2].Value;
          FieldByName('d').Value:=Table1.Fields[3].Value;          
          Post;
          Table1.Next;
          Table2.Next;
        end;
      end;
      Table1.Free;
    end;
  end;
  Table2.Free;
  DeleteFile(FS.Name);
  FindClose(FS);提示“access violation at address………………”。
怎么回事?谢谢了!

解决方案 »

  1.   

    代碼沒大問題, 小的:          Post;
              Table1.Next;
              Table2.Next; //應該不用Next;      Table1.TableName:=FS.Name;
          Table1.Active:=true;  //這句要加上 try...except 檢查會否出錯如你的的題意, 
    不用 Insert , 用 Table2.Append 更好!!!
      

  2.   

    可能出现的错误:
    1、访问了空值字段。
       Table1.Fields[0].Value你里面0-4字段内可能有空值,或者你的表内根本没有4个字段
    2、你的Table1、Table2是否是动态生成的,如果不是的话请不要free它。
    3、如果以上都不是,你可以设置一下断点并跟踪运行,看代码出错的位置!再把出错位置告诉我们!
      

  3.   

    不是“1”;
    “2”我改了;
    问题出现在循环中Table1.TableName:=FS.Name;提示“can not perform this operation on an open dataset."
      

  4.   

    让 您(yczyk(有鬼:泪眼问花花不语,乱红飞过千秋去))费心了。
      

  5.   

    问题出现在循环中Table1.TableName:=FS.Name;提示“can not perform this operation on an open dataset."改掉吧
    改为:Table1.close;
          Table1.TableName:=Fs.Name;
      

  6.   


    如果我在程序后面加下面的语句,
      table2.close;
      table2.databasename:='ssss';
      table2.tablename:='aaaa';
    提示“can not perform this operation on an open dataset."怎么回事。