⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pfm_databack.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        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 + -