我用CompactDatabase压缩带密码的数据库,源程序如下:
engine.CompactDatabase(src_file,des_file,ole_tmp,ole_tmp,';pwd=*&^rfv');
当运行时,提示“多余的参数”,请高手指点,如何压缩带密码的数据库,最好给出源程序。

解决方案 »

  1.   

    我的数据库是ACCESS2000的,用的是Delphi6
      

  2.   

    db.CompactDatabase(filename,tempfile,'',0,';pwd=你的密码');
    var
      db:OLEVariant;
      tempFile: String;
    begin
      result:=false;
      try
        screen.Cursor := crSQLWait;
        if not DAOActive(db) then
          //begin
            //MessageBox(0,'系统没有DAO3.6驱动程序,无法压缩,请安装OFFICE2000','提示',MB_ICONINFORMATION);
            exit;
          //end;
        try
          filename:='你的数据库.mdb'; 
          tempFile:='t.mdb';
          db.CompactDatabase(filename,tempfile,'',0,';pwd=你的密码');
          //db.CompactDatabase(filename,tempfile,'',0,';');
          deleteFile(filename);
          RenameFile(tempfile,filename);
          MessageBox(0,'压缩成功','提示',MB_ICONINFORMATION);
          result:=true;
        except
          MessageBox(0,'压缩失败,可能是其它程序也打开了此数据库,请退出其它程序后再试。','错误',MB_ICONERROR);
        end;
      finally
        db:=Unassigned;
        Screen.Cursor:=crDefault;
      end;
      

  3.   

    我的源程序是:
    var
    x:OLEVariant; 
    begin
    ....
    X := createoleobject('JRO.JetEngine');    
    X.CompactDatabase(sourcefiles,tempfiles,'',0,';pwd=123456');
    ....
    运行后提示多余的参数。似乎对CompactDatabase中的后三个参数不认,请版主多帮忙!
      

  4.   

    还是不行,我的源程序如下:
    procedure TFormmain.menuysClick(Sender: TObject);
    var
      X:OleVariant;
      sourcefiles,tempfiles:string;
      path1,path2:string;
    begin
      path1:=extractfilepath(paramstr(0));
      path2:=path1+'data\workatt.mdb';
      sourcefiles:=path2;
      tempfiles:=path1+'data\temp.mdb';
      try
        if messagebox(formmain.Handle,'确认要压缩数据库吗?','压缩数据库',mb_yesno)<>idyes then exit;
        attdm.Database1.Connected:=false;
        query1.Close;
        X := createoleobject('JRO.JetEngine');
        X.CompactDatabase(sourcefiles,tempfiles,'',0,';pwd=nukebomb761138');
        deletefile(sourcefiles);
        renamefile(tempfiles,sourcefiles);
        messagebox(formmain.Handle,'压缩完毕!','压缩数据库',mb_ok);
        if fileExists(sourcefiles) and FileExists(tempfiles) then
          if deleteFile(sourcefiles)then RenameFile(tempfiles,sourcefiles);
        exit;
      except
        messagebox(formmain.Handle,'主数据库正在被他人或应用程序使用,请稍后再试?','压缩数据库',mb_ok);
      end;
    end;
      

  5.   

    请高手帮助指点一二,本人按版主提供的办法试过,DAOActive被系统标识为不认识的函数,请指点: