怎样在程序中对正在使用的access数据库进行压缩和修复数据库 怎样执行access数据库工具下的压缩和修复数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用原生对象参考http://zhidao.baidu.com/question/5484081.html 要引用ComObj单元function MyCompactDatabase(AFileName,APassWord:string):boolean;Const SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +'Jet OLEDB:Database Password=%s;'; function GetTempPathFileName():string; //取得临时文件名 var SPath,SFile:array [0..254] of char; begin GetTempPath(254,SPath); GetTempFileName(SPath,'~SM',0,SFile); result:=SFile; DeleteFile(result); end; function CreateAccessFile(FileName:String;PassWord:string=''):boolean; //建立Access文件,如果文件存在则失败 var STempFileName:string; vCatalog:OleVariant; begin STempFileName:=GetTempPathFileName; try vCatalog:=CreateOleObject('ADOX.Catalog'); vCatalog.Create(format(SConnectionString,[STempFileName,PassWord])); result:=CopyFile(PChar(STempFileName),PChar(FileName),True); DeleteFile(STempFileName); except result:=false; end; end;//压缩与修复数据库,覆盖源文件var STempFileName:string; vJE:OleVariant;begin STempFileName:=GetTempPathFileName; try vJE:=CreateOleObject('JRO.JetEngine'); vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]), format(SConnectionString,[STempFileName,APassWord])); result:=CopyFile(PChar(STempFileName),PChar(AFileName),false); DeleteFile(STempFileName); except result:=false; end;end; 关键部分参考var Jet: OleVariant;begin //关闭Access数据连接,关闭文件 try Jet := CreateOleObject('JRO.JetEngine'); Jet .CompactDatabase('压缩前.mdb', '压缩后.mdb'); finally Jet := Unassigned; end; 关于delphi中数据库ADOquery存储的问题 我没有学过Delphi语言,可以学习Delphi吗? 兄弟们救命了!!!!找视频控件 如何 获取 本机的 Ip 地址 (急,在线等) Delphi 内部资料~~~ 没人回帖了,我的分给不出去,大家去看看吧 诚聘软件开发人员---太原(工作地) DBGRID问题? 不习惯!抗议改版!!!有人支持吗?? 触法器 AND IBDATASET Delphi2010+Windows 7 一个简单的改颜色都不行? delphi 新学,ADOQuery 未发现字段
参考
http://zhidao.baidu.com/question/5484081.html
Const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
+'Jet OLEDB:Database Password=%s;';
function GetTempPathFileName():string;
//取得临时文件名
var
SPath,SFile:array [0..254] of char;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,'~SM',0,SFile);
result:=SFile;
DeleteFile(result);
end;
function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
//建立Access文件,如果文件存在则失败
var
STempFileName:string;
vCatalog:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vCatalog:=CreateOleObject('ADOX.Catalog');
vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
DeleteFile(STempFileName);
except
result:=false;
end;
end;
//压缩与修复数据库,覆盖源文件
var
STempFileName:string;
vJE:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vJE:=CreateOleObject('JRO.JetEngine');
vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
format(SConnectionString,[STempFileName,APassWord]));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
except
result:=false;
end;
end;
Jet: OleVariant;
begin
//关闭Access数据连接,关闭文件
try
Jet := CreateOleObject('JRO.JetEngine');
Jet .CompactDatabase('压缩前.mdb', '压缩后.mdb');
finally
Jet := Unassigned;
end;