我用Delphi操作Access2000数据库,发现删除数据库中的大量记录后,数据库文件大小不怎么变化,打开access发现那些记录确实被删除了。请问用Delphi如何处理才能把access数据库容量减小?
解决方案 »
- 请问delphi中,如果将idpop3获得的gb18030乱码转成可读文本
- 祝贺三国成为 网络版 版主!
- 关于DBGrid中多选问题
- 不能在ADO控件的FetchComplete事件里用ShowMessage()吗?
- TActionMainMenuBar使用求解。
- 内存泄漏?
- AutoCAD绘制的.dwg文件,如何保存到数据库?如何从数据库中取出?
- 小弟我希望把delphi学得深一点,请各位高手帮忙!
- 哪里有Delphi公用函数源码可以下载?
- 我在Delphi使用过程中,DBGird控件的什么属性可以控制添加记录?
- 怎么将图片插入数据库
- 谁有软件项目验收文档和Ptt? 最少200分. up有分. [email protected] 回答的在http://expert.csdn.net/Expert/topic/1869/1869155.xml?t
function DaoCompactDB(const FileName,Pwd:string):Boolean;
function DaoRepairDB(const FileName:string):Boolean;implementationfunction DaoActive(var DaoObject:OleVariant):Boolean;
begin
Result:=False;
try
DaoObject:=GetActiveOleObject('DAO.DBEngine.36');
Result:=True;
except
try
DaoObject:=CreateOleObject('DAO.DBEngine.36');
Result:=True;
except
DaoObject:=Null;
end;
end;
end;//压缩Access数据库
function DaoCompactDB(const FileName,Pwd:string):Boolean;
var
db:OleVariant;
TempFile:string;
begin
Result:=False;
try
if not DaoActive(db) then
Exit;
try
TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb';
db.CompactDatabase(FileName,TempFile,,,';pwd='+Pwd);
DeleteFile(FileName);
RenameFile(TempFile,FileName);
Result:=True;
except
on E:EOleException do
ShowMessage(E.Message);
end
finally
db:=Unassigned;
end;
end;//修复Access数据库
function DaoRepairDB(const FileName:string):Boolean;
var
db:OleVariant;
begin
Result:=False;
try
if not DaoActive(db) then
Exit;
try
db.RepairDatabase(FileName);
Result:=True;
except
on E:EOleException do
ShowMessage(E.Message);
end
finally
db:=Unassigned;
end;
end;end.压缩之后就好了。
给个建议吧,谢谢
一切搞定。
确实高。