如何压缩ACCESS的数据库文件。(100分)

  • 主题发起人 woodstock
  • 开始时间
W

woodstock

Unregistered / Unconfirmed
GUEST, unregistred user!
在ms access中,有一项“压缩和修复数据库”功能,能够把数据库中
已删除的字段真正删除,请问如何在程序中如何实现。
(用ADO + Access 2000)
 
var
Engine: DBEngine;
begin
Engine:=CoDBEngine.Create;
Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,'');
DeleteFile('OldDB.mdb');
RenameFile('NewDB.mdb','OldDB.mdb);
Engine.Free;
end;
 
如果可以实现的话,我也想知道阿
 
agree superhippo
 
to superhippo,
DBEngine是什么东西? 在那里声明?

我这个程序中不使用BDE,所以包含BDE的单元都不用的。
 
uses dao2000 {或是dao97}
单元所在目录 delphi5/ocx/servers
 
好像是个老问题,照着vb程序翻译一下即可,用DAO实现,下面是我程序中的一段,应该没问题
var dao:OLEVariant;
begin
Adoconnection.Close
screen.Cursor:=crHourGlass;
dao:=CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase(DBName,tempdaname);
DeleteFile(DBName);
RenameFile(tempdbname,DBName);
screen.Cursor:=crDefault;
dao:=NUll;
Adoconnection.Open;
end;
 
谢谢superhippo 和clark 提供的方法。

怎么找不到给你们加分的地方。??

-----这是上面显示的内容,是不是论坛程序出错?
问题讨论没有结束 ...
woodstock,对此问题,您可以:


8 添加您对此问题的注释(请注意换行)


 
都用ADO了,还用DAO,真是...
如果客户机上没装DAO3.5或3.6呢?(版本不对)不就不行了?
用ADOX就行了!!!
 
用KADAO吧,很简单的.
 
to 杜宝: 怎样用ADOX ?
to 小芮: KADAO有是什么东西。怎么做?

用dao:=CreateOleObject('DAO.DBEngine.36');确实可以在我的计算机上运行通过
但是担心版本的问题。客户计算机上怎么办!?


Engine:=CoDBEngine.Create;
Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,'');
的方式,应该是可以得,我看Delphi带的DAO35.hlp帮助文件,确实也是
这么做的,但是不能在我计算机上运行,出错原因是“类没有注册”。

 
“压缩和修复数据库”功能:
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;


示例:

if CompactAndRepair('e:/Old.mdb', 'e:/New.mdb') then
ShowMessage('Successfully')
else
ShowMessage('Error…');

重要注意:
1- 在你的uses语句中加入JRO_TLB单元。
2- 在压缩的过程中,其它人不能打开或使用数据库。
3- 如果你的编译器报告没有找到JRO_TLB单元,就按以下步骤去做:
a) 在Delphi IDE中选择Project - Import Type Library.
b) 往下翻直到你找到“Microsoft Jet and Replication Objects 2.1 Library”.
c) 点击Install按钮
d) 重新编译
 
多人接受答案了。
 
顶部