📄 pfm_databack.pas
字号:
begin
{if fileexists('backdata\'+stable.Strings[i]+'.db')=false then
begin
showmessage('【'+stabledes.Strings[i]+'】的备份不存在');
exit;
end;}
GetBefore:=ifGetBefore(stable.Strings[i]);
if GetBefore=true then
begin
if application.MessageBox(pchar('确定要接收数据嘛?'),
pchar('注意'),MB_OKCANCEL)=IDOK then
begin
//if strtodate(Lastbacktime)>strtodate(fromtime) then
//begin
if application.MessageBox(pchar('上次备份数据的时间为'+
lastbacktime+','+'此次接收数据的备份时间为'+fromtime+',确定要接收数据嘛?'),
pchar('注意'),MB_OKCANCEL)=IDOK then
begin
//删除原来记录
DeleteFormerRecord (stable.Strings[i]);
memo1.lines.add('正在恢复【'+stabledes.strings[i]+'】......');
//table2.IndexFields
table2.tablename:=stable.Strings[i];
table3.tablename:='backdata\'+stable.Strings[i]+'.db';
batmove1.Execute;
cnt1:=cnt1+1;
//将接收记录保存进数据库
WriteRecord(stable.Strings[i]);
end;
end ;
end
else
begin
//exit;
if application.MessageBox(pchar('确定要接收数据嘛?'),
pchar('注意'),MB_OKCANCEL)=IDOK then
begin
memo1.lines.add('正在恢复【'+stabledes.strings[i]+'】......');
//table2.IndexFields
table2.tablename:=stable.Strings[i];
table3.tablename:='backdata\'+stable.Strings[i]+'.db';
batmove1.Execute;
cnt1:=cnt1+1;
WriteRecord(stable.Strings[i]);
end;
end;
end;
end;
//if cnt1=0 then exit;
memo1.lines.add('数据库恢复成功!共有'+inttostr(cnt1)+'个数据库表');
end;
procedure Tfm_databack.BBtnSelallClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to cklbox1.items.count-1 do
begin
cklbox1.Checked[i]:=true;
end;
end;
procedure Tfm_databack.BBtnNoallClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to cklbox1.items.count-1 do
begin
cklbox1.Checked[i]:=false;
end;
end;
function Tfm_databack.GetSql (i:integer):string;
var
tempstr:string;
begin
if radiogroup1.ItemIndex =0 then
begin
backStyle:='月';
tempstr:=floattostr(yearof(today))+'-'+floattostr(monthof(today)) ;
backTime:=tempStr;
result:= ' where '+stimename.Strings[i]+'>='''+ tempstr+'-01'' and '+stimename.Strings[i]+'<=''' + tempstr+'-31''';
end
else if radiogroup1.ItemIndex =1 then
begin
backStyle:='年';
tempstr:=floattostr(yearof(today));
backTime:=tempStr;
Result:= ' where '+stimename.Strings[i]+'>='''+ tempstr+'-01-01'' and '+stimename.Strings[i]+'<=''' + tempstr+'-12-31'''
end
else
begin
//showmessage(datetostr(year)+'-'+datetostr(month)+'-00');
if combobox1.Text ='' then
begin
showmessage('请选择或者输入年份');
exit;
end;
if (combobox1.Text <>'') and (combobox2.Text ='') then
begin
backStyle:='年';
tempstr:=combobox1.Text ;
backTime:=tempStr;
Result:= ' where '+stimename.Strings[i]+'>='''+ tempstr+'-01-01'' and '+stimename.Strings[i]+'<=''' + tempstr+'-12-31''';
end;
if (combobox2.Text <>'') and (combobox2.Text <>'') then
begin
backStyle:='月';
tempstr:= combobox1.Text+'-'+combobox2.Text ;
backTime:=tempStr;
result:= ' where '+stimename.Strings[i]+'>='''+ tempstr+'-01'' and '+stimename.Strings[i]+'<=''' + tempstr+'-31''';
end;
end;
//showmessage(datetostr(year)+'-'+datetostr(month)+'-00');
end;
function Tfm_databack.IfGetBefore(tempName:string):boolean;
var
tempSql:string;
begin
Query1.Close ;
Query1.SQL.Clear ;
tempSql:='select * from pub_z_acceptrecord where 办事处='''+fromoffice+''' and 备份内容='''+
backtime+''' and 备份表名='''+tempName+'''' ;
showmessage(tempsql);
Query1.SQL.Add(tempSql);
query1.Active :=true;
//ery1.first;
if query1.findfirst=false then
Begin
result:=false;
//showmessage('该表已经接收了,是否要删除原来的记录重新接收?')
end
else
begin
//showmessage('确定要接收该记录');
LastBackTime:=query1.fieldbyname('备份时间').AsString ;
// showmessage( LastBackTime);
result:=true;
end;
query1.Active :=false;
end;
procedure Tfm_databack.DeleteFormerRecord(tempName:string);
var
tempSql:string;
begin
query1.Active :=false;
query1.SQL.Clear ;
tempSql:='delete from '+tempName+' where 办事处='''+fromoffice+''' and 上报时间='''+
LastBackTime+'''';
//showmessage(tempsql);
query1.SQL.Add(tempSql);
query1.ExecSQL ;
//query1.Active :=false;
end;
procedure Tfm_databack.ModifyRecord(tableName:string;i:integer);
var
tempSql:string;
begin
query1.Active :=false;
query1.SQL.Clear ;
tempSql:='update '+ tableName +' set 上报时间='''+fromtime+''' '+ getsql(i);
//showmessage(tempsql);
query1.SQL.Add(tempSql);
query1.ExecSQL ;
//query1.Active :=false;
//table1.SQL.Add('select * from '+ stable.Strings[i]+ getsql(i));
end;
procedure Tfm_databack.WriteRecord (tableName:string);
var
i:integer;
tempSql:string;
begin
if backstyle='年' then
begin
for i:=1 to 12 do
begin
if GetBefore=false then
tempSql:='insert into pub_z_acceptrecord (备份时间,办事处,备份人,备份内容, 备份表名) '+
' values ('''+FromTime+''','''+FromOffice+''','''+FromUser+''','''+backtime+inttostr(i)+''','''+
tableName+''')'
else
begin
tempSql:='update '+tablename+' set 备份人='''+ fromUser+ ''',备份时间='''+
FromTime+''' where 备份内容='''+backtime+inttostr(i)+'''';
query1.Active :=false;
query1.SQL.Clear ;
//tempSql:='delete from '+tempName+' where 办事处='''+fromoffice+''' and 上报时间='''+
//backtime+'''';
query1.SQL.Add(tempSql);
query1.ExecSQL ;
end;
//query1.Active :=false;
end;
end
else
begin
if GetBefore=false then
tempSql:='insert into pub_z_acceptrecord (备份时间,办事处,备份人,备份内容, 备份表名) '+
' values ('''+FromTime+''','''+FromOffice+''','''+FromUser+''','''+backtime+''','''+
tableName+''')'
else
tempSql:='update pub_z_acceptrecord set 备份人='''+ fromUser+ ''',备份时间='''+
FromTime+''' where 备份内容='''+backtime+'''';
//showmessage(tempsql);
query1.Active :=false;
query1.SQL.Clear ;
//tempSql:='delete from '+tempName+' where 办事处='''+fromoffice+''' and 上报时间='''+
//backtime+'''';
query1.SQL.Add(tempSql);
query1.ExecSQL ;
end;
end;
procedure Tfm_databack.Button1Click(Sender: TObject);
begin
showmessage(floattostr(yearof(today))+'-'+floattostr(monthof(today)));
end;
procedure Tfm_databack.Button2Click(Sender: TObject);
begin
OpenDialog1.DefaultExt :='*.txt';
if opendialog1.Execute then
edit1.Text :=opendialog1.FileName ;
end;
procedure Tfm_databack.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -