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

📄 pfm_accept.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 3 页
字号:
             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
     //howmessage(floattostr(yearof(today))+'-'+floattostr(monthof(today)));
     Application.CreateForm(tfm_selectdir, fm_selectdir);
     if (fm_selectdir.Showmodal=IDOK)  then
     edit1.text:=fm_selectdir.retpath;
     fm_selectdir.free;
end;

procedure Tfm_databack.Button2Click(Sender: TObject);
begin
     OpenDialog1.Filter  :='文本文件(*.txt;)|*.txt';
     OpenDialog1.InitialDir:='backdata\';
     if opendialog1.Execute then
     begin
        //edit1.Text :=opendialog1.FileName ;
        if rightstr(opendialog1.FileName,8) <>'zxjx.txt' then
        begin
           showmessage('文件名必须为zxjx.txt');
           edit1.Text :='';
           bitbtn2.Enabled :=false;
           exit;
        end
        else
        begin
            cklbox1.Items.Clear ;
            edit1.Text :=opendialog1.FileName ;
            filePath:=midstr(edit1.Text ,1,(length(edit1.Text)-8));
            OpenFile(edit1.Text );

        end;
     end;
end;

procedure   Tfm_databack.OpenFile(tempFile:string);
var
i,j :integer;
TableName:string;
begin
     //使所有的选项失效

     //读出文件中的内容
     j:=0;
     memo1.Lines.Clear ;
     memo1.Lines.Add('以下为打开的文件信息:');
     AssignFile(myFileName,tempFile);
     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 (FromOffice<>'总部') 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;

          if  ((FromOffice=unit_wxp.myOffice) )
           then
          begin
              for i:=0 to stable.Count -1 do
              begin
                   if TableName=stable.strings[i] then
                   begin
                        CkLBox1.Items.Add(stabledes.strings[i]) ;
                        cklbox1.Checked[j]:=true;
                        hastable[j]:=i;
                        j:=j+1;

                        //tableindex[j]:=i;
                   end;
              end;
              {for i:=0 to cklbox1.Count -1 do
              begin

              end;}
          end
          else if (unit_wxp.myOffice<>'总部') and  (fromoffice='总部') then
          begin
              if (TableName='pub_z_part') or (TableName='std_machine')
              then
              begin
              for i:=0 to stable.Count -1 do
              begin
                   if TableName=stable.strings[i] then
                   begin
                        CkLBox1.Items.Add(stabledes.strings[i]) ;
                        cklbox1.Checked[j]:=true;
                        hastable[j]:=i;
                        j:=j+1;

                        //tableindex[j]:=i;
                   end;
              end;


              end;
          end

          else if  (unit_wxp.myOffice='总部') and  (fromoffice<>'总部')  then
          begin
              for i:=0 to stable.Count -1 do
              begin
                   if TableName=stable.strings[i] then
                   begin
                        CkLBox1.Items.Add(stabledes.strings[i]) ;
                        cklbox1.Checked[j]:=true;
                        hastable[j]:=i;
                        j:=j+1;

                        //tableindex[j]:=i;
                   end;
              end;
             end;



     end;
     bitbtn2.Enabled :=true;
     closeFile(myFileName);
end;



procedure Tfm_databack.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
     action:=cafree;
end;


procedure Tfm_databack.RadioGroup1Click(Sender: TObject);
begin
     if  RadioGroup1.ItemIndex =3 then
     begin
        GroupBox2.Visible  :=true;
        backstyle:='';
     end
     else
     begin
        GroupBox2.visible :=false;
        backstyle:='';
     end;


end;

procedure Tfm_databack.Button3Click(Sender: TObject);
begin
    //mkdir(edit1.Text +datetostr(today));
    //filelistbox1.Directory :='';
    //showmessage(application.ExeName  );
    //DealPartInfo;
 
end;

procedure Tfm_databack.Button4Click(Sender: TObject);
begin
     //deletefile();
end;

//判断是否该目录已经存在,如果存在则让用户选择是否删除
//如果不存在则创建
function  Tfm_databack.DelDir(DriverPath:string):boolean;
var
tempPath:string;
i:integer;
ExeFile:string;
begin
     ExeFile:=leftstr(application.ExeName ,length(application.ExeName)-8);
     if  not DirectoryExists(ExeFile+'backdata\') then
         mkdir(ExeFile+'backdata\');

     if midstr(DriverPath ,2,1)<>':' then
     begin
         tempPath:=leftstr(application.ExeName ,length(application.ExeName)-8);
         tempPath:=temppath+'backdata\'+unit_wxp.myOffice +'_'+backtime;
     end
     else
     begin
         tempPath:= Driverpath  +unit_wxp.myOffice +'_'+backtime;
     end;

         if DirectoryExists(tempPath) then
         begin
            if application.MessageBox(pchar('目录'+temppath+'已经存在,说明数据以前上报过,'+
            '要删除原来数据重新上报嘛?'),
            pchar('注意'),MB_OKCANCEL)=IDOK then
            begin
             {FileListbox1.Directory :=temppath;
             if filelistbox1.Count <>0 then
             begin
                for i:=0 to filelistbox1.count-1 do
                begin
                     deletefile(temppath+filelistbox1.Items.Strings[i]);
                end;
             end;}
             edit1.Text :=temppath;
             filepath:= temppath+'\';
             result:=true;
            end
            else
                result:=false;
         end
         else
         begin
              mkdir(temppath);
              edit1.Text:=temppath;
              filepath:= temppath+'\';
              result:=true;
        end;
end;

procedure Tfm_databack.AddBackUpFields (tablename:string);
var
i:integer;
begin
     query1.Close ;
     batmove1.Mappings.Clear ;
     query1.SQL.Clear ;
     query1.SQL.Add('select * from '+tablename);
     query1.Active :=true;
     if tablename<>'partleft' then
     begin
          for i:=0 to query1.FieldCount-1 do
          begin
               if query1.Fields[i].FieldName <>'序号' then
               batmove1.Mappings.Add(query1.fields[i].fieldname
               +'='+query1.fields[i].fieldname);
          end;
     end
     else
     begin

          for i:=0 to query1.FieldCount-1 do
          begin
               if (query1.Fields[i].FieldName ='办事处') or
               (query1.Fields[i].FieldName ='编号') or
               (query1.Fields[i].FieldName ='名称') or
               (query1.Fields[i].FieldName ='库存量') or
               (query1.Fields[i].FieldName ='最小库存')
               then
               batmove1.Mappings.Add(query1.fields[i].fieldname
               +'='+query1.fields[i].fieldname);
          end;
          {batmove1.Mappings.Add('办事处=办事处');
          batmove1.Mappings.Add('编号=编号');
          batmove1.Mappings.Add('名称=名称');
          batmove1.Mappings.Add('库存量=库存量');
          batmove1.Mappings.Add('最小库存=最小库存');}
     end;
     
     query1.Active :=false;
      
end;

procedure Tfm_databack.DealPartInfo ();
var
tempSql:string;
begin
     tempSql:='insert into pub_z_part   select temp_z_part.* from '
     +'temp_z_part where temp_z_part.编号 not in (select 编号 from pub_z_part)';
     dm_wxp.ADOQuery1.Active :=false;
     dm_wxp.ADOQuery1.SQL.Clear ;
     dm_wxp.ADOQuery1.SQL.Add(tempsql);
     dm_wxp.ADOQuery1.ExecSQL ;
     tempSql:='truncate table temp_z_part';
     dm_wxp.ADOQuery1.SQL.Clear ;
     dm_wxp.ADOQuery1.SQL.Add(tempsql);
     dm_wxp.ADOQuery1.ExecSQL;  


end;

procedure Tfm_databack.RadioGroup2Click(Sender: TObject);
begin
     if RadioGroup2.ItemIndex =0 then
     begin
        backstyle :='年';
        combobox1.Enabled :=true;
        combobox2.Enabled :=false;
        combobox3.Enabled :=false;
     end
     else if  RadioGroup2.ItemIndex =1 then
     begin
          backstyle:='月';
          combobox1.Enabled :=true;
          combobox2.Enabled :=true;
          combobox3.Enabled :=false;
     end
     else
     begin
         backstyle:='日';
         combobox1.Enabled :=true;
         combobox2.Enabled :=true;
         combobox3.Enabled :=true;
     end;
end;

end.

⌨️ 快捷键说明

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