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

📄 pfm_databack.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit pfm_databack;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Db, DBTables, CheckLst, ExtCtrls,DateUtils,StrUtils;

type
  Tfm_databack = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    Label1: TLabel;
    BatMove1: TBatchMove;
    Query1: TQuery;
    table1: TQuery;
    Table2: TTable;
    Table3: TTable;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    RadioGroup1: TRadioGroup;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    GroupBox3: TGroupBox;
    Edit1: TEdit;
    Button2: TButton;
    BitBtn1: TBitBtn;
    GroupBox4: TGroupBox;
    CkLBox1: TCheckListBox;
    Panel2: TPanel;
    BBtnNoall: TBitBtn;
    BBtnSelall: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BBtnSelallClick(Sender: TObject);
    procedure BBtnNoallClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);


  private
    { Private declarations }
    function GetSql(i:integer):string;
    function IfGetBefore(tempName:string):boolean;
    procedure DeleteFormerRecord(tempName:string);
    procedure WriteRecord(tableName:string);
    procedure ModifyRecord(tableName:string;i:integer);
  public
    { Public declarations }
  end;

var
  fm_databack: Tfm_databack;

implementation

uses Unit_wxp;

{$R *.DFM}
var
AcceptTableName,stimename,stable,stabledes:TStringlist;
myFileName:TextFile;
backStyle:string;
backTime:string;
lastBackTime:string;
fileContent:string;
FromOffice:string;
FromUser:string;
fromtime:string;
TableCount:integer;
GetBefore:boolean;


procedure Tfm_databack.FormCreate(Sender: TObject);
var
i:integer;
begin
    //label1.Caption:='上次备份数据时间'+InitRead2('备份数据','时间','无');
     stable:=TStringlist.create;
     stimename:=tstringlist.Create ;
     stabledes:=Tstringlist.create;
     stable.Add('pub_z_partsell');
     stabledes.Add('配件回笼信息');
     stimename.Add('日期');
     stable.Add('pub_z_order');
     stabledes.Add('配件订单表');
     stimename.Add('时间');
     stable.Add('pub_z_partin');
     stabledes.Add('零件入库单信息');
     stimename.Add('日期');
     stable.Add('pub_z_partout');
     stabledes.Add('零件出库信息');
     stimename.Add('日期'); 
     stable.Add('pub_z_test');
     stabledes.Add('试机报告信息');
     stimename.Add('维修日期'); 
     stable.Add('pub_z_maintain');
     stabledes.Add('机器维修信息');
     stimename.Add('维修日期');

     stable.add('t_optrecord');
     stabledes.Add('操作日志表');

     stable.add('tab_genfilerz');
     stabledes.Add('生成分店下载文件记录表');
     stable.add('tab_getfilerz');
     stabledes.Add('获取分店上载文件记录表');

     backstyle:='月';
     backtime:=floattostr(yearof(today))+'-'+floattostr(monthof(today));

     for i:=0 to stable.count-1 do
     begin
        cklbox1.Items.Add(stabledes.strings[i]);
     end;

end;

procedure Tfm_databack.BitBtn1Click(Sender: TObject);
var
i,j,cnt1:integer;
tempSql:string;
begin
    if application.MessageBox(pchar('备份数据将花费较长的时间,确定要备份当前所有数据'),
        pchar('注意'),MB_OKCANCEL)<>IDOK then
    begin
        exit;
    end;
     //创建文件
     AssignFile(myFileName,'backdata\readme.txt');
     rewrite(myFileName);
     fromtime:=datetimetostr(time);
     writeln(myFileName,'备份时间:'+fromtime);

     memo1.lines.add('备份时间:'+fromtime);
     writeln(myFileName,'办事处:'+unit_wxp.myoffice);
     memo1.lines.add('办事处:'+unit_wxp.myoffice);
     writeln(myFileName,'备份人:'+unit_wxp.username);
     memo1.lines.add('备份人:'+unit_wxp.username);
     cnt1:=0;
     table1.Databasename:='zxjx';
     batmove1.mode:=batcopy;
     batmove1.Source:=table1;
     batmove1.Destination:=table2;
     AcceptTableName:=tstringlist.Create;
     for i:=0 to stable.count-1 do
     begin
        if  cklbox1.Checked[i]=true then
        begin
            //在备份以前修改每张表的备份时间
            MOdifyRecord(stable.Strings[i],i);
            //备份数据
            memo1.lines.add('正在备份【'+stabledes.strings[i]+'】......');
            table1.Close ;
            table1.SQL.Clear ;
            table1.SQL.Add('select * from '+ stable.Strings[i]+ getsql(i));
            table1.Active :=true;
            //table1.tablename:=stable.Strings[i];

            table2.tablename:='backdata\'+stable.Strings[i]+'.db';

            batmove1.Execute;
            cnt1:=cnt1+1;
            AcceptTableName.Add(stable.Strings[i]);
        end;
     end;
     writeln(myFileName,'备份表数:'+inttostr(cnt1));
     memo1.lines.add('备份表数:'+inttostr(cnt1));
     writeln(myFileName,'备份类型:'+backStyle);
     memo1.lines.add('备份类型:'+backStyle);
     writeln(myFileName,'备份内容:'+backTime);
     memo1.lines.add('备份内容:'+backTime);
     //写入文件中
     for i:=0 to AcceptTableName.Count -1 do
     begin
          writeln(myFileName,'表名:'+AcceptTableName.Strings[i]);
     end;

     if cnt1=0 then exit;
     memo1.lines.add('数据库备份成功!共有'+inttostr(cnt1)+'个数据库表备份');
    label1.caption:='上次备份数据时间'+datetimetostr(date());
    closeFile(myFileName);
end;

procedure Tfm_databack.BitBtn2Click(Sender: TObject);
var
i,cnt1,j:integer;
TableName:string;
begin
    if application.MessageBox(pchar('恢复以前备份数据会将本次数据清除,确定要恢复上次备份数据?'),
        pchar('注意'),MB_OKCANCEL)<>IDOK then
    begin
        exit;
    end;
     for i:=0 to stable.count-1 do
     begin
          CkLBox1.ItemEnabled[i]:=false;
     end;

      memo1.Lines.Add('现在开始恢复数据');
     AssignFile(myFileName,'backdata\readme.txt');
     reset(myFileName);
     //读出备份的时间
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     FromTime:=midstr(filecontent,10,(length(filecontent)-9));
     //读出备份办事处
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     FromOffice:=midstr(filecontent,8,(length(filecontent)-7));
     //读出备份人
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     FromUser:=midstr(filecontent,8,(length(filecontent)-7));

     //备份表数
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     tablecount:= strtoint(midstr(filecontent,10,(length(filecontent)-9)));
     //备份类型
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     backstyle:=rightstr(filecontent,2);
     //备份内容
     readln (myfilename,filecontent);
     memo1.Lines.Add(filecontent);
     backtime:=midstr(filecontent,10,(length(filecontent)-9));

     AcceptTableName:=tstringlist.Create;
     while not eof(myFileName) do
     begin
          readln(myfilename,filecontent);
          memo1.Lines.Add(filecontent);
          TableName:=midstr(filecontent,6,(length(filecontent)-5));
          AcceptTableName.Add(TableName);
          for i:=0 to stable.Count -1 do
          begin
               if TableName=stable.strings[i] then
               begin
                  CkLBox1.ItemEnabled[i]:=true;
                  ckLBox1.Checked[i]:=true ;
               end;
          end;
     end;


     cnt1:=0;
     table2.Databasename:='zxjx';
     batmove1.mode:=batappend;
     batmove1.Source:=table3;
     batmove1.Destination:=table2;


     for i:=0 to stable.count-1 do
     begin
        if  cklbox1.Checked[i]=true then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -