压缩并修复Access2003的代码怎么写?
注意是Access2003

解决方案 »

  1.   

    MSJet4.0支持2000-2003的版本啊,一样的。只要不是access2007,那个 ole引擎都不同了
      

  2.   

    //AFileName:文件名称,APassWord:密码
    procedure CompactDatabase(AFileName,APassWord:string);
    const
      SConnStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;';
    var
      SPath,SFile:Array [0..254] Of Char;
      STempFileName:String;
      JE:OleVariant;
    begin
      GetTempPath(40,SPath);
      GetTempFileName(SPath,'~CP',0,SFile);
      STempFileName:=SFile;
      DeleteFile(STempFileName);
      try
        JE:=CreateOleObject('JRO.JetEngine');
        OleCheck(JE.CompactDatabase(Format(SConnStr,[AFileName,APassWord]),
            Format(SConnStr,[STempFileName,APassWord])));
        CopyFile(PChar(STempFileName),PChar(AFileName),False);
        DeleteFile(STempFileName);
        showmessage('数据库压缩完成!');
      except
        showmessage('数据库压缩失败!');
      end;
    end;