300分求购备份与还原实现的程序方法 备份: CopyFile('Database.mdb','A:\Database.bak');还原: CopyFile('A:\Database.bak','Database.mdb');^o^ 开个玩笑。要想实现库中单个或多个表的备份,用ADO恐怕不行,得用DAO,用它的DBEngin对象来动态创建MDB数据库,然后用SQL语句将原数据库中的表复制过去。还原比较简单,因为不用创建数据库,只需要从用户选择的备份文件中把数据库复制过来就行了,当然,还是用SQL语句。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要是整个库的话就直接复制吧,就象上面我说的那样,这样最简单。不过要想压缩的话,还是要用DAO的。压缩还是用DBEngin对象所提供的CompactDatabase方法。MS Access 应该也是调用这个方法来修复和压缩数据库的。使用方法:DBEngine.CompactDatabase 要修复或压缩的数据库, 修复或压缩后的数据库 to Triumph(无为) 能否具体点. 就是说当备份时,首先使用 DBEngine.CompactDatabase 数据库,备份目标文件 一次性完成修复、压缩、备份数据库过程,还原时就直接COPY过来覆盖原文件即可。 这样的程序我没编过,无法给你具体代码,不过实现方法知道了代码应该没有什么问题。 用DAO实现楼上的兄弟说的极是 VSaber(☆浪人☆) (2002-1-6 19:08:07) 得0分 access数据库不如直接拷贝! 确实是这样的,如果ACCESS中的表相互之间有好多关系,怎么办?真不如直接拷贝! CompactDatabase 支持备份到多个软盘上吗? //delphi 本身就有.支持备份到多个软盘有文件分割的控件,并且是免费的Uses Zlib,.....function CompressString(const Source:string):string;//压缩var CompactedStream :TCompressionStream; Dest:TMemoryStream; Sour:TMemoryStream; iSize:Integer; P:Pointer;begin Dest := TMemoryStream.Create(); Sour := TMemoryStream.Create(); iSize := Length(Source); Sour.SetSize(iSize); Move(Pointer(Source)^,Sour.Memory^,iSize); CompactedStream := TCompressionStream.Create(clMax,Dest); Sour.SaveToStream(CompactedStream); CompactedStream.Free(); Sour.Free(); SetLength(Result,Dest.Size + Sizeof(integer)); P := Pointer(Result); Move(iSize,P^,Sizeof(Integer));// P := Pointer(Integer(P) + Sizeof(integer)); Move(Dest.Memory^,P^,Dest.Size); Dest.Free();end;function UnCompressString(const Source:string):string;//解压缩var DeCompactedStream :TDeCompressionStream; Sour:TMemoryStream; S:String; iSize:integer; P:Pointer;begin Sour:=TMemoryStream.Create(); Move(Pointer(Source)^,iSize,Sizeof(integer)); SetLength(Result,iSize); Sour.SetSize(Length(Source) - Sizeof(integer)); P := Pointer(Source); P := Pointer(Integer(P) + Sizeof(Integer)); Move(P^,Sour.Memory^,Length(Source)-4); DeCompactedStream := TDeCompressionStream.Create(Sour); DeCompactedStream.Read(Pointer(Result)^,iSize); DeCompactedStream.Free(); Sour.Free();end; to lwm8246(lwm8246)什么控件? //请留下 e-mail 或到 http://www.looc.nl/下载最新的版本 to lwm8246(lwm8246控件少了个*.dcu文件? delphi 动态更换主窗体界面背景,并保存 帮我看看sql语句,谢谢了,急 急急,,,有关数据查找的问题,高分相谢!!,如果分不够,再开贴,。 很急的问题(在线) pchar的用法 RecordCount的问题。 关于MDI 急啊 关于在delphi调用matlab的问题(100分) 大家来评评本世纪IT界的最大丑闻是什么? 报表问题 天,为什么,难道QUERY控件的BUG这么大吗,那BORLAND可就真的不怎么样了 有没有人知道这样一个函数可以把浮点数转化成百分数
要是整个库的话就直接复制吧,就象上面我说的那样,这样最简单。不过要想压缩的话,还是要用DAO的。压缩还是用DBEngin对象所提供的CompactDatabase方法。MS Access 应该也是调用这个方法来修复和压缩数据库的。使用方法:
DBEngine.CompactDatabase 要修复或压缩的数据库, 修复或压缩后的数据库
能否具体点.
就是说当备份时,首先使用 DBEngine.CompactDatabase 数据库,备份目标文件 一次性完成修复、压缩、备份数据库过程,还原时就直接COPY过来覆盖原文件即可。 这样的程序我没编过,无法给你具体代码,不过实现方法知道了代码应该没有什么问题。
access数据库不如直接拷贝!
确实是这样的,如果ACCESS中的表相互之间有好多关系,怎么办?
真不如直接拷贝!
Uses Zlib,.....function CompressString(const Source:string):string;//压缩
var
CompactedStream :TCompressionStream;
Dest:TMemoryStream;
Sour:TMemoryStream;
iSize:Integer;
P:Pointer;
begin
Dest := TMemoryStream.Create();
Sour := TMemoryStream.Create();
iSize := Length(Source);
Sour.SetSize(iSize);
Move(Pointer(Source)^,Sour.Memory^,iSize);
CompactedStream := TCompressionStream.Create(clMax,Dest);
Sour.SaveToStream(CompactedStream);
CompactedStream.Free();
Sour.Free();
SetLength(Result,Dest.Size + Sizeof(integer));
P := Pointer(Result);
Move(iSize,P^,Sizeof(Integer));//
P := Pointer(Integer(P) + Sizeof(integer));
Move(Dest.Memory^,P^,Dest.Size);
Dest.Free();
end;function UnCompressString(const Source:string):string;//解压缩var
DeCompactedStream :TDeCompressionStream;
Sour:TMemoryStream;
S:String;
iSize:integer;
P:Pointer;
begin
Sour:=TMemoryStream.Create();
Move(Pointer(Source)^,iSize,Sizeof(integer));
SetLength(Result,iSize); Sour.SetSize(Length(Source) - Sizeof(integer));
P := Pointer(Source);
P := Pointer(Integer(P) + Sizeof(Integer));
Move(P^,Sour.Memory^,Length(Source)-4); DeCompactedStream := TDeCompressionStream.Create(Sour);
DeCompactedStream.Read(Pointer(Result)^,iSize);
DeCompactedStream.Free();
Sour.Free();
end;
什么控件?
控件少了个*.dcu文件?