Access数据的修复和压缩(50分)

  • 主题发起人 主题发起人 mr.zy
  • 开始时间 开始时间
M

mr.zy

Unregistered / Unconfirmed
GUEST, unregistred user!
Win98 + D6 + Access2000
请教哪里出错了?
代码如下:
引用单元:
uses ComObj;
压缩Access数据库:
var
dao: OLEVariant;
begin
dao := CreateOleObject('DAO.DBEngine.35');
dao.CompactDatabase('d:/yourDatabaseName.mdb', 'd:/yourNewCompactedDatabaseName.mdb');
end;
修复Access数据库:
var
dao: OLEVariant;
begin
dao := CreateOleObject('DAO.DBEngine.35');
dao.RepairDatabase('d:/yourDatabaseName.mdb');
end;
 
出现什么错误呀?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=627671
 
我们知道,由于使用内部高速缓存和临时缓冲区,MS Access文件随着使用时间快速增加。这些多余的空间的浪费远超出它对性能的影响,并且备份时会需要很大的空间。解决它的办法是压缩,通过选择Access 2000的菜单“工具->数据库实用工具->压缩和修复数据库”完成,或者也可以在你的Delphi程序中完成。
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:.mdb', 'e:.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) 重新编译
 
报的什么错
 
接受答案了.
 
后退
顶部