动态创建、压缩Access在引用部分加入
use ComObj;1、OLE方式创建数据库
procedure TOfficeForm.SpeedButton1Click(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:\Access97.mdb');
//通过OLE方式创建Access2000格式的数据库
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000.mdb');
end;2、通过OLE方式压缩Access97及Access2000格式的数据库
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:\Access97.mdb','Provider=Micosoft.Jet.OLEDB.3.51;Data Source=c:\Access97Back.mdb;Jet OLEDB:Encrypt Database=True');
//删除旧的数据库文件
DeleteFile('c:\Access97.mdb');
//将压缩后的数据库文件改回原名
RenameFile('c:\Access97Back.mdb','c:\Access97.mdb');
//通过OLE方式压缩Access2000格式的数据库
ComPactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000.mdb','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000Back.mdb;Jet OLEDB:Encrypt Database=True');
DeleteFile('c:\Access2000.mdb');
RenameFile('c:\Access2000Back.mdb','c:\Access2000.mdb');
end;
use ComObj;1、OLE方式创建数据库
procedure TOfficeForm.SpeedButton1Click(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:\Access97.mdb');
//通过OLE方式创建Access2000格式的数据库
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000.mdb');
end;2、通过OLE方式压缩Access97及Access2000格式的数据库
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:\Access97.mdb','Provider=Micosoft.Jet.OLEDB.3.51;Data Source=c:\Access97Back.mdb;Jet OLEDB:Encrypt Database=True');
//删除旧的数据库文件
DeleteFile('c:\Access97.mdb');
//将压缩后的数据库文件改回原名
RenameFile('c:\Access97Back.mdb','c:\Access97.mdb');
//通过OLE方式压缩Access2000格式的数据库
ComPactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000.mdb','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Access2000Back.mdb;Jet OLEDB:Encrypt Database=True');
DeleteFile('c:\Access2000.mdb');
RenameFile('c:\Access2000Back.mdb','c:\Access2000.mdb');
end;
Delphi需要事先登记有关的注册.
begin
Result:=False;
try
DaoObject:=GetActiveOleObject('DAO.DBEngine.36');
Result:=True;
except
try
DaoObject:=CreateOleObject('DAO.DBEngine.36');
Result:=True;
except
DaoObject:=Null;
end;
end;
end;function TransData.DaoCompactDB(const FileName:string):Boolean;
var
accesssdb:OleVariant;
TempFile:string;
begin
Result:=False;
try
if not DaoActive(accesssdb) then
Exit;
try
TempFile:=ExtractFilePath(FileName)+'Temp.mdb';
accesssdb.CompactDatabase(FileName,TempFile);
DeleteFile(FileName);
RenameFile(TempFile,FileName);
Result:=True;
except
on E:EOleException do
ShowMessage(E.Message);
end
finally
accesssdb:=Unassigned;
end;
end;
Delphi需要事先登记有关的注册.
Delphi需要事先登记有关的注册.
Delphi需要事先登记有关的注册.