希望能够对你有点启发
unit FirstFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls;
type
TOfficeForm = class(TForm)
Label1: TLabel;
edtOLECreate: TEdit;
spOLECreate: TSpeedButton;
Label2: TLabel;
edtOLECompact: TEdit;
spOLECompact: TSpeedButton;
Label3: TLabel;
edtDAOCreate: TEdit;
spDAOCreate: TSpeedButton;
Label4: TLabel;
edtDAOCompact: TEdit;
spDAOCompact: TSpeedButton;
procedure spOLECreateClick(Sender: TObject);
procedure spOLECompactClick(Sender: TObject);
procedure spDAOCreateClick(Sender: TObject);
procedure spDAOCompactClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
OfficeForm: TOfficeForm;
implementation
uses ComObj, DAO97;
{$R *.DFM}
procedure TOfficeForm.spOLECreateClick(Sender: TObject);
var
CreateAccess: OleVariant;
begin
//通过建立ADOX(Microsoft ActiveX(R) Data Objects Extensions)对象进行访问
CreateAccess:=CreateOleObject('ADOX.Catalog');
//通过OLE方式创建Access97格式的数据库
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:/Aceco97.mdb');
//通过OLE方式创建Access2000格式的数据库
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/Aceco2000.mdb');
end;
procedure TOfficeForm.spOLECompactClick(Sender: TObject);
var
CompactAccess: OleVariant;
begin
//通过建立JRO(Microsoft Jet and Replication Objects)对象进行访问
CompactAccess:=CreateOleObject('JRO.JetEngine');
//通过OLE方式压缩Access97格式的数据库
CompactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:/Aceco97.mdb',
'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:/Aceco97Back.mdb;Jet OLEDB:Encrypt Database=True');
//删除旧的数据库文件
DeleteFile('c:/Aceco97.mdb');
//将压缩后的数据库文件改回原名
RenameFile('c:/Aceco97Back.mdb','c:/Aceco97.mdb');
//通过OLE方式压缩Access2000格式的数据库
CompactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/Aceco2000.mdb',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/Aceco2000Back.mdb;Jet OLEDB:Encrypt Database=True');
DeleteFile('c:/Aceco2000.mdb');
RenameFile('c:/Aceco2000Back.mdb','c:/Aceco2000.mdb');
end;
procedure TOfficeForm.spDAOCreateClick(Sender: TObject);
var
AccessEngine: DBEngine;
begin
AccessEngine:=CoDBEngine.Create;
//通过DAO方式创建Access97格式的数据库
AccessEngine.CreateDatabase('c:/Aceco97.mdb',';LANGID=0x0804;CP=936;COUNTRY=0;',dbEncrypt);
end;
procedure TOfficeForm.spDAOCompactClick(Sender: TObject);
var
AccessEngine: DBEngine;
begin
AccessEngine:=CoDBEngine.Create;
//通过DAO方式压缩Access97格式的数据库
AccessEngine.CompactDatabase('c:/Aceco97.mdb','c:/Aceco97Back.mdb','',0,'');
DeleteFile('c:/Aceco97.mdb');
RenameFile('c:/Aceco97Back.mdb','c:/Aceco97.mdb');
end;
end.