📄 minerelay_unt.pas
字号:
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 + -