我用CompactDatabase压缩带密码的数据库,源程序如下:
engine.CompactDatabase(src_file,des_file,ole_tmp,ole_tmp,';pwd=*&^rfv');
当运行时,提示“多余的参数”,请高手指点,如何压缩带密码的数据库,最好给出源程序。
engine.CompactDatabase(src_file,des_file,ole_tmp,ole_tmp,';pwd=*&^rfv');
当运行时,提示“多余的参数”,请高手指点,如何压缩带密码的数据库,最好给出源程序。
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;
var
x:OLEVariant;
begin
....
X := createoleobject('JRO.JetEngine');
X.CompactDatabase(sourcefiles,tempfiles,'',0,';pwd=123456');
....
运行后提示多余的参数。似乎对CompactDatabase中的后三个参数不认,请版主多帮忙!
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;