关于Access数据库的问题!
我的一个程序使用access数据库,使用一段时间后库文件很大,在office中可以选择压缩库文件,在程序中如何解决呢?
[解决办法]
删除过期记录
[解决办法]
http://www.delphibbs.com/delphibbs/dispq.asp?lid=11797
[解决办法]
用ADO压缩Access2000库
#include "utilcls.h "
bool CompactMDB(String strMdbFileName, String strPass)
{
bool bReturn;
String strFileTemp = ChangeFileExt(strMdbFileName, ".Tmp ");
String strProvider1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " +
strMdbFileName + ";Jet OLEDB:Database Password= " + strPass;
String strProvider2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " +
strFileTemp + ";Jet OLEDB:Database Password= " + strPass;
Variant vADOObj;
try
{
if(FileExists(strFileTemp))
DeleteFile(strFileTemp);
vADOObj= Variant::CreateObject( "JRO.JetEngine ");
vADOObj.OleProcedure( "CompactDatabase ",
WideString(strProvider1), WideString(strProvider2));
if(FileExists(strMdbFileName))
DeleteFile(strMdbFileName);
RenameFile(strFileTemp, strMdbFileName);
bReturn = true;
}
catch(...)
{
bReturn = false;
}
vADOObj.Clear();
return bReturn;
}
调用举例:
CompactMDB( "C:\\ccrun\\123.mdb ", " "); // 如果密码不为空,第二个参数将密码填上。