用BackupFile来做备份与恢复,备份时没有问题,恢复时便出现了问题(20分)

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

lyplay2

Unregistered / Unconfirmed
GUEST, unregistred user!
backfile果然不错。
但恢复数据时发生了错误:
BackupFile1.RestoreMode:=rmAll;
BackupFile.Restore('c:/DATABAK/123.bck','c:/temp')
BackupFile1.RestoreMode:=rmAll;
backupfile1.Restore('c:/DATABAK/123.bck','c:/DATA)
时便出现不能创建的错误
说明: C:/DATA为当前使用数据的目录。要恢复的数据是123.mdb
我试了关闭123.mdb这个文件也不行。
问题出在那里?谢谢
 
是不是你的程序在用着123.mdb啊?你单建一个application试试看。
帮我个忙,能不能把你的备份数据代码贴到

问题:紧急:备份和恢复数据库的问题 ( 积分:100, 回复:7, 阅读:43 )
分类:数据库-文件型 ( 版主:hbezwwl, 吴剑明 )
来自:chur, 时间:2002-6-6 13:25:00, ID:1146497 | 编辑

我给你分数。我倒是成功了,可是备份数据的代码写了好长,谢谢!
 
备份的文件是没有扩展名的!!!!不是123.bck,而是123
 
你解决这个问题了吗?就是因为有的文件正在使用,所以程序不能再Create。
虽然MainForm没有打开数据库文件,但是
var
bmsz:tbmszform;
begin
bmsz:=tbmszform.create(self);
bmsz.showmodal;
调用的子窗口procedure TbmszForm.FormCreate(Sender: TObject);
总是有打开数据库的。唉,虽然知道原因,可是我也不知道怎么办……
 
不错,
应该是文件正在使用
可是好象每个子窗体的CLOSE事件中我都将ADOQUERY OR ADOTABLE关闭了呀。
 
解决方法:不要用按钮关闭数据库,要用form.close关闭!
procedure TbbbbForm.Button1Click(Sender: TObject);
begin
bbbbForm.Close;
end;

procedure TbbbbForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table1.close;
close;
end;
 
我是这样做的呀
我全部都用ADOQUERY

procedure TbbbbForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADPQIER1.close;
close;
end;






 
你不要用
procedure TbmszForm.FormCreate(Sender: TObject);
全改成
procedure TbmszForm.FormActivate(Sender: TObject);
就没问题了!!!
 
好象还是不行
那位老大能告诉该如何关闭所有正在使用的数据库
我都是用ADOQUERY。
而且每个FormClose都写了
ADOQUERYXX。CLOSE。

谢谢。
 
ADOConnection.Connected:=False;
 
ADOConnection.Connected:=False;
把ADO的连接关闭。
是在每个子窗体的FROMCLOSE的事件中都写
还是在数据恢复时的代码中写就可以了?
 
procedure Tfrm_query.FormCreate(Sender: TObject);
BEGIN ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'mdb/SSBN.mdb;Jet
MyPassW+';Persist Security

END;

procedure Tfrm_query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADOQUERY1。CLOSE;
end;

没有用ADOConnection控件
数据库文件应该是关闭了吧。真的无奈。



 
我使用过,很正常,估计是文件在使用着,具体看你的代码
 
我想也是数据库文件正在被占用
因为BACKFIL是覆盖方式
但是FRMMAIN窗体没有联接数据库
其他窗体凡用了ADOQUERY控件的:
procedure Tfrm_query.FormCreate(Sender: TObject);
BEGIN ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'mdb/SSBN.mdb;Jet
MyPassW+';Persist Security

END;
都作了关闭处理
procedure Tfrm_query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADOQUERY1。CLOSE;
end;
这样文件应该没有使用了吧?
实在想不出来还有什么地方不对
 
最好还是用一个adoconnection控件吧,看了一下,如果在adoquery的
connectionstring中写语句,仅仅调用close关闭恐怕是不够的(你可以
看看目录下的“数据库文件.ldb”文件仍然存在。如果一定要只用adoquery,
在close之后还得把connectionstring清空。
 
多人接受答案了。
 
后退
顶部