为什么压缩ACCESS总是出错啊?
mcuos 2005-11-10 05:57:11 用ADO压缩Access2000库 作者: 佚名
关 键 字:ADO,压缩Access2000数据库,Microsoft.Jet.OLEDB.4.0
本文转自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=492&d=o1s23x
#include "utilcls.h"
void CompactDatabase(String f1,String psw1, String f2,String psw2)
{
String Provider1="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f1 + ";Jet OLEDB:Database Password=" + psw1;
String Provider2="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f2 + ";Jet OLEDB:Database Password=" + psw2;
Variant Adoobj=Variant::CreateObject("JRO.JetEngine");
Adoobj.OleProcedure("CompactDatabase",Provider1,Provider2);
AdoObj.Clear( ); // 释放 ADO对象
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String f1="yhecdagl1.mdb"; // 源库1
String psw1="yhecdagl"; // 密码1
String f2="yhecdagl2.mdb"; // 新目的库2
String psw2="yhecdagl2"; // 新密码2
String dir=ExtractFilePath(Application->ExeName);
if (FileExists(f2))
DeleteFile(f2);
CompactDatabase(dir+f1,psw1,dir+f2,psw2);
ShowMessage("Finished");
}
这段代码在很多网站都提供了,但是我把它加到工程运行时总是提示“未知名称”,什么原因造成的呀?
下面是我改了一点点的程序:
void TestCompactDatabase(String f1,String psw1, String f2,String psw2)
{
String Provider1="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f1 + ";Jet OLEDB:Database Password=" + psw1;
String Provider2="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f2 + ";Jet OLEDB:Database Password=" + psw2;
Variant Adoobj=Variant::CreateObject("JRO.JetEngine");
Adoobj.OleProcedure("TestCompactDatabase",Provider1,Provider2);
Adoobj.Clear(); // 释放 ADO对象
}
void __fastcall TMainForm::Button7Click(TObject *Sender)
{
String f1="TaxBox.mdb"; // 源库1
String psw1=""; // 密码1
String f2="TaxBox1.mdb"; // 新目的库2
String psw2=""; // 新密码2
String dir=ExtractFilePath(Application->ExeName);
if (FileExists(f2))
DeleteFile(f2);
TestCompactDatabase(dir+f1,psw1,dir+f2,psw2);
ShowMessage("Finished");
}