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

📄 datacorver.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 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 + -