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

📄 minerelay_unt.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
 Base_DataS.DataSet.FieldByName('Face_Lane').AsInteger:=AddFace;

 if AddWorkGroup=LastRelay.WorkGroup //如果新添加的记录的施工队(CurrentGroup)和原表中的最后一条记录的施工队(WorkGroup)是同一个施工队时
   then
     begin
      Base_DataS.DataSet.FieldByName('Relay_Route').AsInteger:=LastRelay.Relay_Route;
      Base_DataS.DataSet.FieldByName('Relay_Id').AsInteger:=LastRelay.Relay_Id+1;

      EndDay:=trunc(LastRelay.E_Date);//得到上一个接替面的结束时间
      Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EndDay+Interv;
      Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EndDay+Interv+AddTaskTime;
     end
   else  //不是同一个施工队时
     begin
      //判断新添加的施工队是否与同一方案中前面的施工队重复(重复是不允许的)
       for i:=1 to High(Relay) do
         begin
            if(Relay[i].Project_Id=LastRelay.Project_Id)and(Relay[i].WorkGroup=AddWorkGroup)
              then
                begin
                   Inf1:=messagedlg('该方案中 "'+AddWorkGroupName+'" 采煤队不能安排两次,请重新选择采煤队!继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
                   if Inf1=mrno then
                     begin
                       Base_DataS.DataSet.Cancel; //取消表的添加操作
                       AddMode:=false;

                       DBGrid1.ReadOnly:=true;
                       DBGrid1.Enabled:=true;
                       BitBtn1.Enabled:=true;
                       BitBtn2.Enabled:=true;
                       BitBtn4.Enabled:=true;
                       BitBtn5.Enabled:=true;
                       BitBtn6.Enabled:=true;
                       BitBtn7.Enabled:=true;
                       BitBtn8.Enabled:=true;
                       BitBtn9.Enabled:=true;
                       BitBtn10.Enabled:=true;
                       BitBtn11.Enabled:=true;
                       BitBtn12.Enabled:=true;

                       DBLookUpComboBox2.Enabled:=false;
                       DBLookUpComboBox3.Enabled:=false;
                       DBLookUpListBox1.Enabled:=false;
                       Label5.Caption:='';
                       exit;                 
                     end;
                   DBLookUpComboBox2.SetFocus;
                   exit;
                end;
         end;
       Base_DataS.DataSet.FieldByName('Relay_Route').AsInteger:=LastRelay.Relay_Route+1;
       Base_DataS.DataSet.FieldByName('Relay_Id').AsInteger:=1;
       //确定该回采面的开始时间
       //通过界面输入该采煤队的第一个回采面的开始时间
       TimePara_Frm:=TTimePara_Frm.Create(self);
       TimePara_Frm.ShowModal;
       BeginDay:=TimePara_Frm.BeginTime;
       TimePara_Frm.Free;
       TimePara_Frm:=nil;
       Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=BeginDay;
       Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=BeginDay+AddTaskTime;
       Base_DataS.DataSet.FieldByName('TaskTime').AsInteger:=AddTaskTime;
     end;

 try
   Base_DataS.DataSet.Post;
 except
   Base_DataS.DataSet.Cancel;//没有更新成功,取消表的添加状态,以便执行其它操作
   showmessage('添加数据没有更新成功!');
 end;
 AddMode:=false; //更新成功或者没有成功都取消界面的记录添加状态,以避免在"添加"添加或者"插入"按钮前,再次执行该更新过程
 DBGrid1.ReadOnly:=true;
 DBGrid1.Enabled:=true;
 BitBtn1.Enabled:=true;
 BitBtn2.Enabled:=true;
 BitBtn4.Enabled:=true;
 BitBtn5.Enabled:=true;
 BitBtn6.Enabled:=true;
 BitBtn7.Enabled:=true;
 BitBtn8.Enabled:=true;
 BitBtn9.Enabled:=true;
 BitBtn10.Enabled:=true;
 BitBtn11.Enabled:=true;
 BitBtn12.Enabled:=true;

 DBLookUpComboBox2.Enabled:=false;
 DBLookUpComboBox3.Enabled:=false;
 DBLookUpListBox1.Enabled:=false;
 Label5.Caption:='';
 BitBtn1.SetFocus;
end;

procedure TMineRelay_Frm.InsertPost_NewRelayTask;
var
i,j,r,m1,m2,BeginDay,EndDay,Interv:integer;
Name1:string;
Inf1,Inf:Variant;
InsertWorkGroup,InsertFace:integer; //新插入的记录的施工队和工作面的编号
InsertWorkGroupName,InsertFaceName:string; //新插入的记录的施工队和工作面的名称
Remain,DayOutput:single;
InsertBeginT,InsertEndT:integer;
InsertTaskTime,InsertTechnicType:integer; //插入的记录的回采面工期,回采工艺
begin
   //................
   if varisnull(Base_DataS.DataSet.FieldByName('WorkGroup').Value) then
     begin
       showmessage('请选择相应的施工队!');
       exit;
     end;
   if varisnull(Base_DataS.DataSet.FieldByName('Area').Value) then
     begin
       showmessage('请选择相应的采区及对应的回采面!');
       exit;
     end;
   //取得界面给新插入记录指定的值,这些值可能不符合要求,需要进行调整
   InsertWorkGroup:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Id').AsInteger;
   InsertWorkGroupName:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Name').AsString;
   InsertFace:=Face_DataS.DataSet.FieldByName('Face_Id').AsInteger;
   InsertFaceName:=Face_DataS.DataSet.FieldByName('Name').AsString;
   //计算插入的回采面的工期InsertTaskTime
   Remain:=Face_DataS.DataSet.FieldByName('Remain_Reserve').AsFloat;
   DayOutput:=Face_DataS.DataSet.FieldByName('Day_Output').AsFloat;
   InsertTaskTime:=Face_DataS.DataSet.FieldByName('TaskTime').AsInteger;
   {if DayOutput>10E-5
     then InsertTaskTime:=round(10000*Remain/DayOutput)
     else
       begin
         InsertTaskTime:=1;
         showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
       end;}
    if InsertTaskTime<=0 then
      begin
        InsertTaskTime:=1;
        showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
      end;

   //找到插入的这个接替面的回采工艺,并得到在这个回采工艺下,接替下一个面时需要间隔的时间,
   AllFace_DataS.DataSet.Locate('Face_Id',InsertFace,[LoCaseInsensitive]);
   InsertTechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
   for r:=1 to High(IntervalPara) do
     begin
       if IntervalPara[r].MineTechnic=InsertTechnicType  then
         begin
           Interv:=IntervalPara[r].IntervalTime;
           break;
         end;
     end;


   //最终确定新插入记录的各个字段值
   with Base_DataS.DataSet do
     begin
       FieldByName('Sequence').AsInteger:=Current.Sequence;
       //判断该方案是否被安排了重复的回采面
       for i:=1 to High(Relay) do
         begin
           if(Relay[i].Project_Id=Current.Project_Id)
              and(Relay[i].Face_Lane=InsertFace) then
             begin
               Inf1:=messagedlg('该方案中不能重复安排 "'+InsertFaceName+'" 回采面,请重新选择回采面!,继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
               if Inf1=mrno then
                 begin
                   Cancel; //取消插入操作
                   InsertMode:=false;
                   //还原对原表中从当前记录到以后的记录所做的临时修改
                   GotoBookmark(Mark);

                   j:=1;
                   while not Eof do
                      begin
                        Edit;
                        FieldByName('Sequence').AsInteger:=BehindRelay[j].Sequence;
                        Post; //更新后表的指针仍然指向当前记录,但是,当关闭再打开该表后,该当前记录的Sequence字段值若仍然为-1,则指针指向的记录将发生变化
                        Next;
                        j:=j+1;
                      end;
                   GotoBookmark(Mark);
                   DBGrid1.ReadOnly:=true;
                   DBGrid1.Enabled:=true;
                   BitBtn1.Enabled:=true;
                   BitBtn2.Enabled:=true;
                   BitBtn4.Enabled:=true;
                   BitBtn5.Enabled:=true;
                   BitBtn6.Enabled:=true;
                   BitBtn7.Enabled:=true;
                   BitBtn8.Enabled:=true;
                   BitBtn9.Enabled:=true;
                   BitBtn10.Enabled:=true;
                   BitBtn11.Enabled:=true;
                   BitBtn12.Enabled:=true;

                   DBLookUpComboBox2.Enabled:=false;
                   DBLookUpComboBox3.Enabled:=false;
                   DBLookUpListBox1.Enabled:=false;
                   Label5.Caption:='';
                   exit;
                 end;
               DBLookUpListBox1.SetFocus;
               exit;
             end;
         end;
       //根据从界面输入的有关信息,分三种情况来处理插入:
       if (InsertWorkGroup=Current.WorkGroup) //给某个采煤队插入一个接替面
         then
           begin
             FieldByName('Project_Id').AsInteger:=Current.Project_Id;
             FieldByName('WorkGroup').AsInteger:=Current.WorkGroup;
             FieldByName('Relay_Route').AsInteger:=Current.Relay_Route;
             FieldByName('Relay_Id').AsInteger:=Current.Relay_Id;
             if Current.Relay_Id=1
               then
                 begin
                 //确定该回采面的开始时间
                   //通过界面输入该采煤队的第一个回采面的开始时间
                   TimePara_Frm:=TTimePara_Frm.Create(self);
                   TimePara_Frm.ShowModal;
                   BeginDay:=TimePara_Frm.BeginTime;
                   TimePara_Frm.Free;
                   TimePara_Frm:=nil;
                   FieldByName('Begin_Date').AsDateTime:=BeginDay;
                   FieldByName('End_Date').AsDateTime:=BeginDay+InsertTaskTime;
                 end;
             if Current.Relay_Id<>1 then
                 begin
                   EndDay:=trunc(CurrentPriorRelay.E_Date);//得到上一个接替面的结束时间
                   FieldByName('Begin_Date').AsDateTime:=EndDay+Interv;
                   FieldByName('End_Date').AsDateTime:=EndDay+Interv+InsertTaskTime;
                 end;
           end;
       if (InsertWorkGroup<>Current.WorkGroup)and(Current.Relay_Id=1)and(Current.Sequence<>1) then
           begin
             if InsertWorkGroup=CurrentPriorRelay.WorkGroup //为上一个采煤队的最后一个接替面的后面再插入一个接替面
               then
                 begin
                   FieldByName('Project_Id').AsInteger:=CurrentPriorRelay.Project_Id;
                   FieldByName('WorkGroup').AsInteger:=CurrentPriorRelay.WorkGroup;
                   FieldByName('Relay_Route').AsInteger:=CurrentPriorRelay.Relay_Route;
                   FieldByName('Relay_Id').AsInteger:=CurrentPriorRelay.Relay_Id+1;

                   EndDay:=trunc(CurrentPriorRelay.E_Date);//得到上一个接替面的结束时间
                   FieldByName('Begin_Date').AsDateTime:=EndDay+Interv;
                   FieldByName('End_Date').AsDateTime:=EndDay+Interv+InsertTaskTime;
                 end;
             if InsertWorkGroup<>CurrentPriorRelay.WorkGroup then
               begin
                 Inf:=messagedlg('确定在本方案第一个采煤队的前面插入新采煤队吗?若是请按"yes",若插入上一个方案的最后一个采煤队请按"no"!',mtconfirmation,[mbyes,mbno,mbcancel],0);
                 if Inf=mryes then  //在本方案的第一个采煤队前面插入一个新的采煤队
                   begin
                     FieldByName('Project_Id').AsInteger:=Current.Project_Id;
                     //判断新插入的记录的采煤队在本方案中(插入前的当前记录所在的方案)是否重复
                     for i:=1 to High(Relay) do
                       begin
                         if (Relay[i].Project_Id=Current.Project_Id)
                             and(Relay[i].WorkGroup=InsertWorkGroup)then
                           begin
                             Inf1:=messagedlg('方案 '+inttostr(Current.Project_Id)+' 中重复安排了 "'+InsertWorkGroupName+'" 采煤队,请重新指定采煤队!继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
                             if Inf1=mrno then
                               begin
                                 Cancel; //取消插入操作
                                 InsertMode:=false;
                                 //还原对原表中从当前记录到以后的记录所做的临时修改
                                 GotoBookmark(Mark);

                                 j:=1;
                                 while not Eof do
                                    begin
                                      Edit;
                                      FieldByName('Sequence').AsInteger:=BehindRelay[j].Sequence;
                                      Post; //更新后表的指针仍然指向当前记录,但是,当关闭再打开该表后,该当前记录的Sequence字段值若仍然为-1,则指针指向的记录将发生变化
                                      Next;
                                      j:=j+1;
                                    end;
                                 GotoBookmark(Mark);
                                 DBGrid1.ReadOnly:=true;
                                 DBGrid1.Enabled:=true;
                                 BitBtn1.Enabled:=true;
                                 BitBtn2.Enabled:=true;
                                 BitBtn4.Enabled:=true;
                                 BitBtn5.Enabled:=true;
                                 BitBtn6.Enabled:=true;
                                 BitBtn7.Enabled:=true;
                                 BitBtn8.Enabled:=true;
                                 BitBtn9.Enabled:=true;
                                 BitBtn10.Enabled:=true;
                                 BitBtn11.Enabled:=true;
                                 BitBtn12.Enabled:=true;

                                 DBLookUpComboBox2.Enabled:=false;
                                 DBLookUpComboBox3.Enabled:=false;
                                 DBLookUpListBox1.Enabled:=false;
                                 Label5.Caption:='';
                                 exit;
                               end;
                             DBLookUpComboBox2.SetFocus;
                             exit;
                           end;
                       end;
                     FieldByName('WorkGroup').AsInteger:=InsertWorkGroup;
                     FieldByName('Relay_Route').AsInteger:=1;
                     FieldByName('Relay_Id').AsInteger:=1;

                     //确定该回采面的开始时间
                     //通过界面输入该采煤队的第一个回采面的开始时间
                     TimePara_Frm:=TTimePara_Frm.Create(self);
                     TimePara_Frm.ShowModal;
                     BeginDay:=TimePara_Frm.BeginTime;

⌨️ 快捷键说明

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