//这里贴一端朋友的代码,朋友说测试过没问题,可是我就是那他的程序测试
不能压缩,老是提示“数据类型有误”,大家看看吧!
我的系统是winme+Microsoft.Jet.OLEDB.4.0,数据库有完全的权限,
请大家指点迷津!!!
//代码如下:
#include <vcl.h>
#pragma hdrstop
#include "utilcls.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmYsAccess *frmYsAccess;
//---------------------------------------------------------------------------
__fastcall TfrmYsAccess::TfrmYsAccess(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmYsAccess::StartYSClick(TObject *Sender)
{
/* AnsiString f1="HL2000.MDB"; // 源库1
AnsiString psw1=""; // 密码1
AnsiString f2="HLNew.mdb"; // 新目的库2
AnsiString psw2=""; // 新密码2
AnsiString dir=ExtractFilePath(Application->ExeName);
f1=dir+f1; f2=dir+f2; */
if (FileExists(txtEdit2->Text)) // 不允许目的库存在
{
if(Application->MessageBoxA("目标数据库已存在,是否覆盖?","询问",MB_YESNO+32)==IDYES)
{
DeleteFile(txtEdit2->Text);
}
else
{
return;
}
}
CompactDatabase(txtEdit1->Text,txtEdit3->Text,txtEdit2->Text,txtEdit3->Text);
Application->MessageBoxA("数据库压缩完成!","完成",MB_OK+64);
}
//---------------------------------------------------------------------------
void TfrmYsAccess::CompactDatabase(AnsiString f1, AnsiString psw1, AnsiString f2, AnsiString psw2)
{
AnsiString Provider1="Provider=Microsoft.Jet.OLEDB.4.0"
";Data Source="+f1+
";Jet OLEDB:Database Password="+psw1;
AnsiString 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();
}
void __fastcall TfrmYsAccess::OpenDBClick(TObject *Sender)
{
if(OpenDialog1->Execute())
{
txtEdit1->Text=OpenDialog1->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmYsAccess::Button1Click(TObject *Sender)
{
if(SaveDialog1->Execute())
{
txtEdit2->Text=SaveDialog1->FileName+".mdb";
}
}
//---------------------------------------------------------------------------
goto here:
http://www.csdn.net/expert/topic/658/658390.xml?temp=.7677271
http://www.csdn.net/expert/topic/791/791528.xml?temp=.7522089
这个是真正用ado压缩数据库,不是dao的
呵呵,关注一下。
http://www.csdn.net/expert/topic/525/525712.xml?temp=.846203
我先收藏
up