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

📄 drillrelay_unt.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
            end;
        end;

      if (not BeginDateChange)and(EndDateChange) then //仅仅修改了结束时间
        begin
          if EditEndDate<=Current.B_Date then
            begin
              showmessage('修改后的结束时间应在本掘进任务的开始时间之后!');
              DateTimePicker2.SetFocus;
              exit;
            end;
        end;


      Inf:=messagedlg('确认修改吗?',mtconfirmation,[mbyes,mbno],0);
      if Inf=mryes
        then
          begin
            if (FaceIsEdit)and(DBLookUpListBox1.SelectedItem<>'') then
                begin
                  EditFace_Lane:=DrillTask_DataS.DataSet.FieldByName('Lane_Id').AsInteger;
                  EditFace_LaneName:=DrillTask_DataS.DataSet.FieldByName('Name').AsString;
                  //.......要根据不同情况对掘进队编号,接替号和工作面进行处理.....
                  for i:=1 to High(Relay) do
                    begin
                      if (Relay[i].Project_Id=Current.Project_Id)
                          and(Relay[i].Face_Lane=EditFace_Lane)then
                        begin
                           if Current.Face_Lane=EditFace_Lane then break;//可以允许保持原记录的回采面不变
                           Inf1:=messagedlg('该方案中不能重复接替 "'+EditFace_LaneName+'" 任务,请重新指定!继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
                           if Inf1=mrno then
                             begin
                               Base_DataS.DataSet.Cancel; //取消表的添加操作
                               EditMode:=false;
                               BitBtn3.Enabled:=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;
                               BitBtn11.Enabled:=true;
                               BitBtn12.Enabled:=true;
                               BitBtn13.Enabled:=true;

                               DBLookUpComboBox2.Enabled:=false;
                               DBLookUpComboBox3.Enabled:=false;
                               ComboBox1.Enabled:=false;
                               DBLookUpListBox1.Enabled:=false;
                               Label6.Visible:=false;
                               Label7.Visible:=false;
                               DateTimePicker1.Visible:=false;
                               DateTimePicker2.Visible:=false;
                               exit;
                             end;
                           DBLookUpListBox1.SetFocus;
                           exit;
                        end;
                    end;
                  Base_DataS.DataSet.FieldByName('Face_Lane').AsInteger:=EditFace_Lane;
                end; //end:if DBLookUpListBox1.SelectedItem<>''

              //处理时间修改的问题
              if (BeginDateChange)and(not EndDateChange)then//仅仅修改开始时间
                begin
                  Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditBeginDate+Current.TaskTime;
                end;
              if (not BeginDateChange)and(EndDateChange)then//仅仅修改结束时间
                begin
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
                end;
              if (BeginDateChange)and(EndDateChange)then //开始和结束时间都修改了
                begin
                  Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
                end;
            try
              Base_DataS.DataSet.Post;
              if(BeginDateChange)or(EndDateChange)then
                begin
                  //计算修改后的结束时间与原结束时间之间的差
                  DelT:=trunc(Base_DataS.DataSet.FieldByName('End_Date').AsDateTime-Current.E_Date);
    //根据当前记录的日期修改,对其后的记录的日期进行相应修改,
    //对于前面的记录则无需修改,因为当前记录的起始日期变化不会影响到前面的工序
                  BK:=Base_DataS.DataSet.GetBookmark;
                  if not IsLast then
                    begin
                      Base_DataS.DataSet.Next;
                      with Base_DataS.DataSet do
                         begin
                             for i:=2 to High(BehindRelay) do //i从2开始是被修改记录的后面的记录
                               begin
                                 if (BehindRelay[i].Project_Id=Current.Project_Id)and(BehindRelay[i].Relay_Route=Current.Relay_Route)
                                   then
                                     begin
                                       Edit;
                                       FieldByName('Begin_Date').AsDateTime:=BehindRelay[i].B_Date+DelT;
                                       FieldByName('End_Date').AsDateTime:=BehindRelay[i].E_Date+DelT;
                                       Post;
                                     end;
                                 next;
                               end;
                         end;
                    end;//end:if not IsLast then
                  Base_DataS.DataSet.GotoBookmark(BK);
                  Base_DataS.DataSet.FreeBookmark(BK);
                end;
            except
              Base_DataS.DataSet.Cancel;
              showmessage('数据更新没有成功!');
            end;
          end;
      if Inf=mrno
        then
          begin
            Base_DataS.DataSet.Cancel;
          end;

      EditMode:=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;
      BitBtn11.Enabled:=true;
      BitBtn12.Enabled:=true;
      BitBtn13.Enabled:=true;

      BitBtn3.Enabled:=false;
      DBLookUpComboBox2.Enabled:=false;
      DBLookUpComboBox3.Enabled:=false;
      ComboBox1.Enabled:=false;
      DBLookUpListBox1.Enabled:=false;
      Label6.Visible:=false;
      Label7.Visible:=false;
      DateTimePicker1.Visible:=false;
      DateTimePicker2.Visible:=false;
    end;
end;

procedure TDrillRelay_Frm.BitBtn8Click(Sender: TObject);
var
i,r,n:integer;
begin
  inherited;

  //找到被修改的当前记录及其后的接替任务的掘进工艺,并得到在这个掘进工艺下需要间隔的时间,
  for i:=1 to High(BehindRelay) do
    begin
      Data_Frm.Lane_AdoTab.Locate('Lane_Id',BehindRelay[i].Face_Lane,[LoCaseInsensitive]);
      BehindRelay[i].TechnicTypeName:=Data_Frm.Lane_AdoTab.fieldbyname('Technic_Type').AsString;
      for r:=1 to High(DrillRelayIntervT) do
        begin
          if DrillRelayIntervT[r].Technic=BehindRelay[i].TechnicTypeName  then
            begin
              BehindRelay[i].Interval:=DrillRelayIntervT[r].IntervalTime;
              break;
            end;
        end;
    end;
  Base_DataS.DataSet.Edit;
  BitBtn13.Enabled:=false;
  DBLookUpComboBox1.Enabled:=false; //不允许修改方案编号
  DBLookUpComboBox2.Enabled:=false; //不允许修改施工队
  DBLookUpComboBox3.SetFocus;
  showmessage('修改完成后请按"确定"!');
end;

procedure TDrillRelay_Frm.DBLookupComboBox3Click(Sender: TObject);
var
str1,str2:string;
i,j,Pro:integer;
begin
  if DBLookUpComboBox1.Text='' then
    begin
      showmessage('请确定相应的方案!');
      exit;
    end;
  Pro:=strtoint(DBLookUpComboBox1.Text);
  str1:=DBLookUpComboBox3.Text;
  if str1='' then
    begin
      showmessage('请输入相应的采区!');
      exit;
    end;
  if not (Area_DataS.DataSet.Locate('Area_Name',str1,[locaseinsensitive])) then exit;
  with DrillTask_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select * from 巷道f');
      sql.Add('where (Area=:v1) and ((Property=:v2)or(Property=:v3))');
      sql.Add('and(State<>:v4)and(Project_Id=:v5)and(DisPosed=0)'); //Disposed,0:未处理;1:已处理
      sql.Add('order by Lane_Id asc');
      parameters.ParamByName('v1').Value:=str1;
      Parameters.ParamByName('v2').Value:='开拓巷道';
      Parameters.ParamByName('v3').Value:='准备巷道';
      Parameters.ParamByName('v4').Value:='已完工';
      Parameters.ParamByName('v5').Value:=Pro;
      ExecSQL;
      open;
    end;
  DBLookUpListBox1.ListSource:=DrillTask_DataS; //DrillTask_DataS的数据集连接的是DrillTask_AdoQ
  DBLookUpListBox1.ListField:='Name';
  DBLookUpListBox1.KeyField:='Lane_Id';
  //DBLookUpListBox1.DataSource:=Area_DataS;
  //DBLookUpListBox1.DataField:='';
  with Face_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct Face,Area,Lane_Id,Project_Id,Disposed from 巷道f');
      sql.Add('where (Area=:v1)and(Face<>:v2)and(State<>:v3)');
      sql.Add('and(Project_Id=:v4)and(Disposed=0)');//Disposed,0:未处理;1:已处理
      sql.Add('order by Lane_Id asc');
      parameters.ParamByName('v1').Value:=str1;
      parameters.ParamByName('v2').Value:='';
      Parameters.ParamByName('v3').Value:='已完工';
      parameters.ParamByName('v4').Value:=Pro;
      ExecSQL;
      open;
      comboBox1.Text:='';
      ComboBox1.Items.Clear;
      if RecordCount>0 then
        begin
          first;
          ComboBox1.Items.Add(FieldByName('Face').AsString);
          next;
          i:=0;
          while not eof do
            begin
              if ComboBox1.Items.Strings[i]<>FieldByName('Face').AsString
                then
                  begin
                    ComboBox1.Items.Add(FieldByName('Face').AsString);
                    i:=i+1;
                  end;
              next;
            end;
        end;
    end;

  //ComboBox1.
end;

procedure TDrillRelay_Frm.ComboBox1Click(Sender: TObject);
var
str:string;
i,j,Pro:integer;
begin
  if DBLookUpComboBox1.Text='' then
    begin
      showmessage('请确定相应的方案!');
      exit;
    end;
  Pro:=strtoint(DBLookUpComboBox1.Text);
  if ComboBox1.Text='' then exit;
  with DrillTask_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select * from 巷道f');
      sql.Add('where (Face=:v1)and(State<>:v2)');
      sql.Add('and(Project_Id=:v3)and(Disposed=0)'); //Disposed,0:未处理;1:已处理
      sql.Add('order by Lane_Id asc');
      Parameters.ParamByName('v1').Value:=ComboBox1.Text;
      Parameters.ParamByName('v2').Value:='已完工';
      Parameters.ParamByName('v3').Value:=Pro;
      ExecSQL;
      open;
    end;
  DBLookUpListBox1.ListSource:=DrillTask_DataS;
  DBLookUpListBox1.ListField:='Name';
  DBLookUpListBox1.KeyField:='Lane_Id';
end;

procedure TDrillRelay_Frm.AddDrillRelay;
var
i,j,r,n:integer;
Inf1:variant;
AddWorkGroup,AddFace_Lane,AddProject:integer; //新添加的记录的施工队和工作面的编号
AddWorkGroupName,AddFace_LaneName:string; //新添加的记录的施工队和工作面的名称
Remain,DayOutput:single; //新添加的记录的回采面的剩余储量和日产量
AddTaskTime,Interv,BeginDay,EndDay:integer;//新添加的记录的回采面工期,接替间隔时间,开始时间,结束时间
AddTechnicType:string;//添加的记录的掘进工艺
AddLST,AddLFT:TDate;

⌨️ 快捷键说明

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