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;
下面是我的程序
我先点备分,提示成功,紧接着,我点恢复,就会提示某表找不到
若我先点恢复,提示成功,紧接着,我点备分,也会错!
除非我完成这两个其中之一,把这个数据备分与恢复的窗口关了,再进,就可以正确的执行另一个.....但老师检查我的时候,我不能这么搞吧....
到底怎么回事啊!!
还有那个显示上次备分时间,保存本次备分时间怎么写啊???
程序如下:
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;