压缩与修复有密码的Access2000数据库?(50分)

R

renyi

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中如何用代码的方式压缩与修复有密码的Access2000数据库文件
我用的是这个函数,但提示密码无效,应该怎么办?
Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean;
const
sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var
oJetEng : JetEngine;
begin
sOldMDB := sProvider + 'Data Source=' + sOldMDB;
sNewMDB := sProvider + 'Data Source=' + sNewMDB;

try
oJetEng := CoJetEngine.Create;
oJetEng.CompactDatabase(sOldMDB, sNewMDB);
oJetEng := Nil;
Result := True;
except
oJetEng := Nil;
Result := False;
end;
end;
 
设此数据库的密码是 idlehagar

use JRO_TLB;
procedure CompactMdb;
const sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var oJetEng: JetEngine;
 sOldMdb, sNewMdb: string;
begin
 sOldMdb := sProvider + 'Data Source=' + 'C:/Database/Test.mdb;'
  + 'Jet OLEDB:Database Password=idlehagar';
 sNewMdb := sProvider + 'Data Source=' + 'C:/Test.mdb;'
  + 'Jet OLEDB:Database Password=idlehagar';
 try
  try
   oJetEng := CoJetEngine.Create;
   oJetEng.CompactDatabase(sOldMdb, sNewMdb);
   if FileExists('C:/Test.mdb') then begin
    CopyFile('C:/Test.mdb', 'C:/Database/Test.mdb', False);
    DeleteFile('C:/Test.mdb');
  end;
  except
   on E: Exception do
    showmessage('Compact database failed');
  end
 finally
  oJetEng := nil;
 end;
end;
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1268352
 
压缩:
Var
jro : JetEngine;
begin
jro := CoJetEngine.Create;
jro.CompactDatabase( 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabase.mdb;Jet OLEDB:Database Password=yourpassword',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=packeddatabase.mdb;Jet OLEDB:Database Password=yourpassword' );
end;
 
多人接受答案了。
 
顶部