关于系统备分与恢复?怎么都错....还有怎么记录上次备分时间?(100分)

  • 主题发起人 主题发起人 xuan328
  • 开始时间 开始时间
X

xuan328

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL2K数据库,可以备分数据表吗?而不是库?
下面是我的程序
我先点备分,提示成功,紧接着,我点恢复,就会提示某表找不到
若我先点恢复,提示成功,紧接着,我点备分,也会错!
除非我完成这两个其中之一,把这个数据备分与恢复的窗口关了,再进,就可以正确的执行另一个.....但老师检查我的时候,我不能这么搞吧....
到底怎么回事啊!!

还有那个显示上次备分时间,保存本次备分时间怎么写啊???

程序如下:

var
stable,stabledes:TStringlist;
procedure Tdataback_Form.FormCreate(Sender: TObject);
var
i:integer;
begin
   label1.Caption:='上次备份数据时间'+InitRead('备份数据','时间','无');
stable:=TStringlist.create;
stabledes:=Tstringlist.create;
stable.Add('t_ccxx');
stabledes.Add('车次信息表');
stable.Add('t_ckxx');
........   //同上,列举出所有表
 for i:=0 to stable.count-1 do
begin
cklbox1.Items.Add(stabledes.strings);
end;
end;
//备分
procedure Tdataback_Form.BitBtn1Click(Sender: TObject);
var
i,cnt1:integer;
begin
if application.MessageBox(pchar('备份数据将花费较长的时间,确定要备份当前所有数据'),
pchar('注意'),MB_OKCANCEL)<>IDOK then
begin
exit;
end;
cnt1:=0;
table1.Active:=False;
table1.Databasename:=main_form.Database1.DatabaseName;
batmove1.mode:=batcopy;
batmove1.Source:=table1;
batmove1.Destination:=table2;
for i:=0 to stable.count-1 do
begin
if cklbox1.Checked=true then
begin
memo1.lines.add('正在备份【'+stabledes.strings+'】......');
table1.tablename:=stable.Strings;
table2.tablename:='backdata/'+stable.Strings;
batmove1.Execute;
cnt1:=cnt1+1;
end;
end;
if cnt1=0 then exit;
memo1.lines.add('数据库备份成功!共有'+inttostr(cnt1)+'个数据库表备份');
Initsave('备份数据','时间',datetimetostr(date()));
label1.caption:='上次备份数据时间'+datetimetostr(date());
showmessage('数据库备份,共备份'+inttostr(cnt1)+'个数据库表');
end;
//恢复
procedure Tdataback_Form.BitBtn2Click(Sender: TObject);
var
i,cnt1:integer;
begin
if application.MessageBox(pchar('恢复以前备份数据会将本次数据清除,确定要恢复上次备份数据?'),
pchar('注意'),MB_OKCANCEL)<>IDOK then
begin
exit;
end;
cnt1:=0;
table2.Active:=False;
table2.Databasename:=main_form.Database1.DatabaseName;
batmove1.mode:=batcopy;
batmove1.Source:=table1;
batmove1.Destination:=table2;
for i:=0 to stable.count-1 do
begin
if cklbox1.Checked=true then
begin
memo1.lines.add('正在恢复【'+stabledes.strings+'】......');
table1.tablename:='backdata/'+stable.Strings;
table2.tablename:=stable.Strings;
batmove1.Execute;
cnt1:=cnt1+1;
end;
end;
if cnt1=0 then exit;
memo1.lines.add('数据库恢复成功!共有'+inttostr(cnt1)+'个数据库表');
showmessage('数据库恢复,共有'+inttostr(cnt1)+'个数据库表');
end;
 
55555555555555555,谁帮忙解决下啊,毕业设计啊...急
 
if table1.Active then
table1.Active:=False;
....
if table2.Active then
table2.Active:=False;
 
batmove1是 什么?
 
是分别加在备分,恢复的里面吗?

运行过了,还是错的,说对象名t_CCXX无效....
 
batmove1是BATCHMOVE啊......
 
t_ccxx 表名?
 
是的....
其实是这样的
哪个表是我第一个选中的
备分后就恢复,就会显示首先这个表无效....
 
我若先恢复,成功后,就点备分
就会提示:INVALID TABLE NAME
 
注意调整table1和table2的状态,你只要把程序恢复成你打开窗口时的状态就OK了
 
看来你做完备份或恢复后应该把表table1或table2设置为激活状态。
 
备分和恢复后面,均添加table1.Active:=true
           table2.Active:=true

我去试下
另外,怎么记录上次备分的时间呢???
Initsave
InitRead 是没有用的,而且会提示没有定义...怎么搞啊
 
还是不行,怎么改啊
 
InitRead、InitSave是自己写的函数。
 
后退
顶部