// 备份数据库: 将数据库复制(CopyFile)一份到其他目录即可.
// 压缩数据库
// user ComObj, ActiveX;
procedure CompressData(SrcConn: TAdoConnection; SrcFile, DstFile: TFileName);
var Jro: OleVariant;
var strCon1, strCon2: String;
begin
strCon1 := SrcConn.ConnectionString;
SrcConn.Close;
strCon2 := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DstFile + ';Jet OLEDB:Encrypt Database=True;';
try
Jro := CreateOleObject('JRO.JetEngine');
Jro.CompactDatabase(strCon1, strCon2);
DeleteFile(SrcFile);
MoveFile(PChar(DstFile), PChar(SrcFile));
finally
Jro := nil;
end;
end;
// 压缩数据库
// user ComObj, ActiveX;
procedure CompressData(SrcConn: TAdoConnection; SrcFile, DstFile: TFileName);
var Jro: OleVariant;
var strCon1, strCon2: String;
begin
strCon1 := SrcConn.ConnectionString;
SrcConn.Close;
strCon2 := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DstFile + ';Jet OLEDB:Encrypt Database=True;';
try
Jro := CreateOleObject('JRO.JetEngine');
Jro.CompactDatabase(strCon1, strCon2);
DeleteFile(SrcFile);
MoveFile(PChar(DstFile), PChar(SrcFile));
finally
Jro := nil;
end;
end;
解决方案 »
- odbc,ado,与oracle,sql server的驱动程序有什么区别?请各位赐教?
- F7单步执行会出问题
- 请教一个关于使用Treeview的节点Data出错原因
- MSSQL数据库的表中有数据类型为dateTime,怎样只取记录中的日期?
- 在代码中把DBGrid.options中的dgRowselect由false改为true,请贴出代码.
- 如何让formstyles为fsMDIChild的窗体没有标题栏呢?
- 收藏夹里的那些东西是什么类型的文件,怎样得到它们正真的URL?
- 为何我在Dataset中编写OnGetText,OnSetText可是,却不让我将改变数据写入库
- 一百五十分!!!从DBGrid拖动项目到ListView/TreeView,能否实现?
- 今天三喜临门,送拨号工具,送源码,送分
- 怎么没人理我?
- 对于动态创建的一组combobox与edit控件怎么用鼠标对它进行拖动改变它的坐标位置到新坐标?
dao: OLEVariant;
begin
dao := CreateOleObject('DAO.DBEngine.35');
dao.CompactDatabase('d:\yourDatabaseName.mdb',
'd:\yourNewCompactedDatabaseName.mdb');
end;
....
var X:OleVariant;
sourcefiles,tempfiles:string;
begin
form_flat;
if messagebox(mainform.handle,'确认要压缩数据库吗?','压缩',mb_yesno)<>idyes then exit;
data1.Database1.Connected:=false;
sourcefiles:=原数据库路径;
tempfiles:=目标数据库路径;
try
X:=createoleobject('dao.dbEngine.36');
x.CompactDatabase(sourcefiles,tempfiles,'',0,';pwd=');
deletefile(sourcefiles);
renamefile(tempfiles,sourcefiles);
StatusBar1.Panels[5].Text:='压缩数据完毕,请重新启动程序!';
if fileExists(sourcefiles) and FileExists(tempfiles) then
if deleteFile(sourcefiles)then RenameFile(tempfiles,sourcefiles);
showmessage('压缩数据完毕,请重新启动程序!');
close;
except
Messagedlg('主数据库正在被他人或应用程序使用,请稍后再试!',mtwarning,[mbok],0);
end;
end;