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