📄 pfm_databack.pas
字号:
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 + -