完整的代码如下,BCB6编译,事先Import Type Library,使用JetEngin这个控件。
被压缩的数据库是Access2000格式的。以下代码已经测试过正常。
**********************************************************
WideString src, des;
HRESULT result;
src = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://Database.mdb";
des = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D://Database.mdb";
try
{
JetEngine1->CompactDatabase(src.c_bstr(), des.c_bstr());
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
***********************************************************
MSDN的实例代码如下:
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d://nwind2.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d://abbc.mdb;" /
"Jet OLEDB:Engine Type=4");
}
catch(_com_error &e)
{
::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ;
}
传入的参数不同!奇怪的是前面BCB程序的代码不能捕捉错误(这个可以人为做一下试验)就知道了。为什么呢?