请指明路!(敬请详解)(100分)

  • 主题发起人 主题发起人 liaoqianhong
  • 开始时间 开始时间
L

liaoqianhong

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是DELPHHI+ACCESS,要备份access数据表,怎么做啊?(敬请详解,能成功的话!我将我所有的分都给你!!)
 
以前的帖子有好多了
自己找一下了
[:)]
 
//备份
procedure TfmMain.DoBackupExecute(Sender: TObject);
begin
if SaveDialog.Execute then
begin
if ZipFile(Global.ExePath + 'dbWuye.mdb', SaveDialog.FileName) then
MessageDg('备份数据库成功', MB_ICONINFORMATION)
else
MessageDg('备份数据库失败', MB_ICONWARNING);
end;
end;
//还原
procedure TfmMain.DoRestoreExecute(Sender: TObject);
begin
if MDIChildCount > 0 then
raise Exception.Create('请先关闭所有窗口');
if OpenDialog.Execute then
begin
try
dmMain.ConnectionMain.Connected := False;
DeleteFile(Global.ExePath + 'dbWuye.bak');
CopyFile(Pchar(Global.ExePath + 'dbWuye.mdb'), Pchar(Global.ExePath + 'dbWuye.bak'), False);
DeleteFile(Global.ExePath + 'dbWuye.mdb');
if UnZipFile(OpenDialog.FileName, Global.ExePath + 'dbWuye.mdb') then
MessageDg('还原数据库成功', MB_ICONINFORMATION)
else
MessageDg('还原数据库失败', MB_ICONWARNING);
dmMain.ConnectionMain.Connected := True;
dmMain.qryLogin.Active := True;
except
if FileExists(Global.ExePath + 'dbWuye.bak')
and not FileExists(Global.ExePath + 'dbWuye.mdb') then
CopyFile(Pchar(Global.ExePath + 'dbWuye.bak'), Pchar(Global.ExePath + 'dbWuye.mdb'), False);
end;
end;
end;

function ZipFile(Source, Target: String): Boolean;
var
Buf : array[0..1023] of Byte;
ZStream : TCompressionStream;
SourceStream,
TargetStream : TFileStream;
Size : Longint;
ReadCout : Integer;
begin
Result := False;
SourceStream := TFileStream.Create(Source, fmOpenRead or fmShareDenyNone);
TargetStream := TFileStream.Create(Target, fmCreate);
ZStream := TCompressionStream.Create(clDefault, TargetStream);
try
try
Size := SourceStream.Size;
ZStream.Write(Size, 4);
while SourceStream.Position < SourceStream.Size do
begin
ReadCout := SourceStream.Read(Buf, 1024);
ZStream.Write(Buf, ReadCout);
end;
Result := True;
except
;
end;
finally
SourceStream.Free;
ZStream.Free;
TargetStream.Free;
end;
end;

function UnZipFile(Source, Target: String): Boolean;
var
Buf : array[0..1023] of Byte;
ZStream : TDecompressionStream;
SourceStream,
TargetStream : TFileStream;
Size : Longint;
ReadCout,
Total : Integer;
begin
Result := False;
SourceStream := TFileStream.Create(Source, fmOpenRead);
TargetStream := TFileStream.Create(Target, fmCreate);
ZStream := TDecompressionStream.Create(SourceStream);
try
try
ZStream.Read(Size, 4);
Total := 0;
while Total < Size do
begin
if Size - Total >= 1024 then
ReadCout := ZStream.Read(Buf, 1024)
else
ReadCout := ZStream.Read(Buf, Size - Total);
Total := Total + ReadCout;
TargetStream.Write(Buf, ReadCout);
end;
Result := True;
except
;
end;
finally
ZStream.Free;
SourceStream.Free;
TargetStream.Free;
end;
end;
 
_Murray请问你有没有adobackup组件啊,有的话发到我邮箱(liaoqianhong@yahoo.com.cn)一下,我将不甚感激!!!
 
不好意思,我没有你说的那个组件.

我觉得没必要要用控件,这样一样可以达到目的就可以了.
 
你在大富翁“全文搜索”菜单,用关键词搜一下,比如:
ACCESS 备份
=================
保你能解决问题。
 
to _Murray
看了压缩、解压缩很好,但不知TCompressionStream是何类
 
帮您改了一下,见另一帖。
 
为什么我备份的不是我想要备份的文件啊?是一个有错误的文件,备份出来的文件!而且还原也不行!没有起到作用!!!!!
 
我的代码是备份data.mdb您要根据情况自己改的,根据您原程序:点备份时打开的对话框是用来输入将data.mdb备份为什么文件名(及扩展名),点恢复时打开的对话框是用来选前面备份好的备份文件以便用其替代正在使用的data.mdb。
 
我想在点备份按钮时,我想不经过选择,就直接备份起了!怎么做啊????
 
去掉SaveDialog1控件及 if SaveDialog1.Execute then这一行并且要把SaveDialog1.FileName换一个您喜欢的名字(注意要加单引号),还原部分同理。
 
很感谢你,还有我要加入背景音乐,怎么加啊?
 
多人接受答案了。
 
后退
顶部