📄 datacorver.pas
字号:
unit datacorver;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, CheckLst, DBTables, DB,StrUtils;
type
TForm_datacover = class(TForm)
GroupBox4: TGroupBox;
CkLBox1: TCheckListBox;
Panel3: TPanel;
BBtnNoall: TBitBtn;
BBtnSelall: TBitBtn;
Panel4: TPanel;
GroupBox3: TGroupBox;
Edit1: TEdit;
BitBtn2: TButton;
Panel5: TPanel;
Memo1: TMemo;
Button1: TButton;
BatMove1: TBatchMove;
Table2: TTable;
Table3: TTable;
OpenDialog1: TOpenDialog;
query1: TQuery;
table1: TQuery;
procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BBtnSelallClick(Sender: TObject);
procedure BBtnNoallClick(Sender: TObject);
private
{ Private declarations }
procedure OpenFile(tempFile:string);
procedure AddBackUpFields(tablename:string);
public
{ Public declarations }
end;
var
Form_datacover: TForm_datacover;
stable,stabledes,AcceptTableName:TStringlist;
filePath,FromOffice,fromtime:string;
implementation
uses Unit_wxp;
{$R *.dfm}
procedure TForm_datacover.FormCreate(Sender: TObject);
var
i:integer;
begin
stable:=TStringlist.create;
stabledes:=Tstringlist.create;
stable.Add('PartLeft');
stabledes.Add('配件库存信息');
stable.Add('pub_z_part');
stabledes.Add('配件基本信息');
stable.Add('std_machine');
stabledes.Add('机型标准表');
stable.Add('pub_z_partsell');
stabledes.Add('配件回笼信息');
stable.Add('pub_z_partorder');
stabledes.Add('配件订单表');
stable.Add('pub_z_partin');
stabledes.Add('零件入库单信息');
stable.Add('pub_z_partout');
stabledes.Add('零件出库信息');
stable.Add('pub_z_test');
stabledes.Add('试机报告信息');
stable.Add('pub_z_maintain');
stabledes.Add('机器维修信息');
stable.Add('pub_z_contract');
stabledes.Add('合同主表');
stable.Add('pub_z_contract_machine');
stabledes.Add('机器销售表');
stable.Add('pub_z_contract_project');
stabledes.Add('特别工程款表');
stable.Add('pub_z_contract_specialties');
stabledes.Add('合同的其他特殊装置');
stable.Add('pub_z_contract_payment_before');
stabledes.Add('合同预期付款');
stable.Add('pub_z_contract_payment_record');
stabledes.Add('合同付款记录');
stable.Add('pub_z_contract_machine_requisition');
stabledes.Add('宁波震雄出机单');
stable.Add('pub_z_contract_machine_requisition_ys');
stabledes.Add('亚塑机械出机单');
stable.Add('pub_z_machine_out');
stabledes.Add('产品出库通知');
stable.Add('pub_z_machine_in');
stabledes.Add('产品入库通知');
stable.Add('pub_z_machine_outpay');
stabledes.Add('出机应付款汇总表');
stable.Add('pub_z_hk_in');
stabledes.Add('货款回收汇总表');
stable.Add('pub_z_cjqk');
stabledes.Add('出机情况汇总表');
stable.Add('pub_z_thqk');
stabledes.Add('退货情况汇总表');
stable.Add('pub_z_client');
stabledes.Add('客户登记表');
stable.Add('pub_c_client_person');
stabledes.Add('客户联系人 ');
stable.Add('pub_z_visitold');
stabledes.Add('客户回访表');
stable.Add('pub_z_complaint');
stabledes.Add('客户投诉表');
stable.Add('crttbl_mainpay');
stabledes.Add('佣金基本信息生成表');
stable.Add('crttbl_monthdeliver');
stabledes.Add('月佣金发放表');
stable.Add('crttbl_officepay');
stabledes.Add('月佣金校核表');
stable.Add('pub_z_bonusratio1');
stabledes.Add('总公司人员权重表');
stable.Add('pub_z_checkmark');
stabledes.Add('总公司人员平分表');
stable.Add('pub_z_fare');
stabledes.Add('费用表');
stable.Add('pub_z_foryearbonus');
stabledes.Add('年终奖金表');
stable.Add('pub_z_mainpay');
stabledes.Add('佣金基本信息表');
stable.Add('pub_z_monthpaycheck');
stabledes.Add('月佣金校核表');
stable.Add('pub_z_stuff');
stabledes.Add('职工基本信息表');
stable.Add('pub_z_payin');
stabledes.Add('职工工资个人信息表');
stable.Add('pub_z_payinbase');
stabledes.Add('职工工资基本信息表');
stable.Add('pub_z_payratio');
stabledes.Add('个人权重表');
stable.Add('pub_z_salededuct');
stabledes.Add('零件计提登记表');
stable.Add('pub_z_saledistribute');
stabledes.Add('零件计提分配表');
stable.Add('pub_z_saleratio');
stabledes.Add('零件计提权重表');
stable.Add('pub_z_saleregister');
stabledes.Add('回笼货款登记表');
stable.Add('pub_z_ybnsdeliver');
stabledes.Add('年终奖金发放表');
stable.Add('pub_z_ybnsdeliver1');
stabledes.Add('总公司人员奖金发放个人信息表');
stable.Add('pub_z_ybnsdeliverall1');
stabledes.Add('总公司人员奖金发放综合信息表');
stable.Add('pub_z_yearratio');
stabledes.Add('年终奖金权重表');
stable.Add('std_office_station');
stabledes.Add('职位标准表');
stable.Add('std_pay_bonus');
stabledes.Add('吨位奖罚标准表');
stable.Add('std_pay_coefficient');
stabledes.Add('货款回笼系数表');
stable.Add('std_pay_deduct');
stabledes.Add('零配件计提率表');
//stable.Add('std_pay_float');
//stabledes.Add('公司佣金浮动率表');
stable.Add('std_pay_maintain');
stabledes.Add('维修人工费计提率');
stable.Add('std_pay_office');
stabledes.Add('公司佣金率表 [] ');
stable.Add('std_pay_upper');
stabledes.Add('佣金发放上限表');
// stable.Add('view_mainpay');
// stabledes.Add('佣金基本登记表视图');
stable.Add('t_userright');
stabledes.Add('用户权限');
stable.Add('pub_z_acceptrecord');
stabledes.Add('日志信息');
for i:=0 to stable.count-1 do
begin
cklbox1.Items.Add(stabledes.strings[i]);
//cklbox1.Checked[i]:=true;
end;
//edit1.Text :=leftstr(application.ExeName ,length(application.ExeName)-8)+'updata';
//if not DirectoryExists(edit1.Text) then
//mkdir(edit1.Text );
end;
procedure TForm_datacover.BitBtn2Click(Sender: TObject);
var
i,cnt1,j:integer;
begin
if application.MessageBox(pchar('此次接收数据的备份时间为'+
fromtime+',恢复数据会删除原来所有的数据,确定要恢复数据嘛?'),
pchar('注意'),MB_OKCANCEL)<>IDOK then
exit;
memo1.Lines.Add('现在开始恢复数据');
cnt1:=0;
table2.Databasename:='zxjx';
batmove1.Mappings.Clear ;
batmove1.mode:=batappend;
batmove1.Source:=table3;
batmove1.Destination:=table2;
for i:=0 to stable.count-1 do
begin
if cklbox1.Checked[i]=true then
begin
//DeleteFormerRecord (stable.Strings[i],i);
memo1.lines.add('正在恢复【'+stabledes.strings[i]+'】......');
//table2.IndexFields
AddBackUpFields(stable.Strings[i]);
table2.tablename:=stable.Strings[i];
table3.tablename:=filepath+stable.Strings[i]+'.db';
batmove1.Execute;
cnt1:=cnt1+1;
//将接收记录保存进数据库
//WriteRecord(stable.Strings[i]);
end;
end;
//if cnt1=0 then exit;
memo1.lines.add('数据库恢复成功!共有'+inttostr(cnt1)+'个数据库表');
end;
procedure TForm_datacover.Button1Click(Sender: TObject);
var
i:integer;
fileName:string;
begin
//for i:=0 to stable.count-1 do
//begin
//cklbox1.Items.Add(stabledes.strings[i]);
//cklbox1.Checked[i]:=true;
//end;
OpenDialog1.Filter :='文本文件(*.txt;)|*.txt';
OpenDialog1.InitialDir:='updata\';
if opendialog1.Execute then
begin
//edit1.Text :=opendialog1.FileName ;
if rightstr(opendialog1.FileName,15) <>'zxjx_backup.txt' then
begin
showmessage('文件名必须为zxjx_backup.txt');
edit1.Text :='';
bitbtn2.Enabled :=false;
exit;
end
else
begin
fileName :=opendialog1.FileName ;
filePath:=midstr(fileName ,1,(length(fileName)-15));
OpenFile(fileName );
edit1.Text :=fileName;
end;
end;
end;
procedure TForm_datacover.BBtnSelallClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to cklbox1.items.count-1 do
begin
cklbox1.Checked[i]:=true;
end;
end;
procedure TForm_datacover.BBtnNoallClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to cklbox1.items.count-1 do
begin
cklbox1.Checked[i]:=false;
end;
end;
procedure TForm_datacover.AddBackUpFields (tablename:string);
var
i:integer;
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('truncate table '+tablename) ;
query1.ExecSQL ;
query1.Close ;
batmove1.Mappings.Clear ;
query1.SQL.Clear ;
query1.SQL.Add('select * from '+tablename);
query1.Active :=true;
for i:=0 to query1.FieldCount-1 do
begin
if (query1.Fields[i].FieldName <>'序号') and
(query1.Fields[i].FieldName <>'id') then
batmove1.Mappings.Add(query1.fields[i].fieldname
+'='+query1.fields[i].fieldname);
//showmessage(query1.fields[i].fieldname
//+'='+query1.fields[i].fieldname);
end;
query1.Active :=false;
end;
procedure TForm_datacover.OpenFile(tempFile:string);
var
i :integer;
TableName:string;
fileContent:string;
fileName:string;
myFileName:TextFile;
begin
fileName:=tempFile;
//读出文件中的内容
memo1.Lines.Clear ;
memo1.Lines.Add('以下为打开的文件信息:');
AssignFile(myFileName,fileName);
reset(myFileName);
//读出备份的时间
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'备份时间' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
//FromTime:=midstr(filecontent,10,(length(filecontent)-9));
//读出备份办事处
readln (myfilename,filecontent);
if leftstr(filecontent,6)<>'办事处' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
FromOffice:=midstr(filecontent,8,(length(filecontent)-7));
if (FromOffice<>unit_wxp.myOffice) and (unit_wxp.myOffice<>'总部') then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
//读出备份人
readln (myfilename,filecontent);
if leftstr(filecontent,6)<>'备份人' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
//FromUser:=midstr(filecontent,8,(length(filecontent)-7));
//备份表数
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'备份表数' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
//tablecount:= strtoint(midstr(filecontent,10,(length(filecontent)-9)));
//备份类型
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'备份类型' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
//backstyle:=rightstr(filecontent,2);
//备份内容
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'备份内容' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
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));
if fileexists(filepath+'\'+TableName+'.db')=true then
//AcceptTableName.Add(TableName)
else
begin
showmessage('表"'+ TableName+'"不存在!');
continue;
end;
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;
bitbtn2.Enabled :=true;
closeFile(myFileName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -