需要这么复杂吗?
以前用VB 时,好象一个过程就行了。
Delphi中没有吗

解决方案 »

  1.   

    uses ComObj;procedure TForm1.Button1Click(Sender: TObject);
    var
      X:OleVariant;
      sourcefiles,tempfiles:string;
    begin
      sourcefiles:='E:\xll\model.mdb';
      tempfiles:='E:\xll\temp.mdb';
      try
        X := createoleobject('JRO.JetEngine');
        X.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+sourcefiles,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+tempfiles);
        deletefile(sourcefiles);
        renamefile(tempfiles,sourcefiles);
        Messagedlg('OK!',mtwarning,[mbok],0);
        if fileExists(sourcefiles) and FileExists(tempfiles) then
          if deleteFile(sourcefiles)then RenameFile(tempfiles,sourcefiles);
        exit;
      except
        Messagedlg('主数据库正在被他人或应用程序使用,请稍后再试!',mtwarning,[mbok],0);
      end;
    end;
      

  2.   

    用JRO可以的,我怎么忘了呢。谢谢楼上的高手。