procedure TForm22.CompactAccess(dbName :string;JetId:string='4.0');
var
AVariant :Variant;
begin
if FileExists(dbName+'.tmp') then DeleteFile(DbName+'.tmp'); //是否存在相同的.tmp的临时文件,有则删了
AVariant := CreateOleObject('JRO.JetEngine');
AVariant.CompactDataBase('Provider=Microsoft.Jet.OLEDB.'+JetId+';Jet OLEDB:Database Password=hjp;Data Source='+
dbName,
'Provider=Microsoft.Jet.OLEDB.'+JetId+';Data Source='+dbName+'.tmp');
DeleteFile(DbName);
ReNameFile(dbName+'.tmp',DbName); //把文件名改回来end;
上面的是个压缩access数据库过程
我用access数据库做了个小程序
里面有压缩,备份,报表等功能
做完后,我把access数据库打
开了,然后压缩就不能用了,
说以排它方式打开,我把报表那里的ADO连接改为false就OK
了,但是报表不能用!怎么解决都能用的问题
前提,不再重新把数据库搞一遍!
var
AVariant :Variant;
begin
if FileExists(dbName+'.tmp') then DeleteFile(DbName+'.tmp'); //是否存在相同的.tmp的临时文件,有则删了
AVariant := CreateOleObject('JRO.JetEngine');
AVariant.CompactDataBase('Provider=Microsoft.Jet.OLEDB.'+JetId+';Jet OLEDB:Database Password=hjp;Data Source='+
dbName,
'Provider=Microsoft.Jet.OLEDB.'+JetId+';Data Source='+dbName+'.tmp');
DeleteFile(DbName);
ReNameFile(dbName+'.tmp',DbName); //把文件名改回来end;
上面的是个压缩access数据库过程
我用access数据库做了个小程序
里面有压缩,备份,报表等功能
做完后,我把access数据库打
开了,然后压缩就不能用了,
说以排它方式打开,我把报表那里的ADO连接改为false就OK
了,但是报表不能用!怎么解决都能用的问题
前提,不再重新把数据库搞一遍!
access是以独占的方式打开的,所以在你压缩数据库的时候你要把连接断开,然后再压缩。