📄 relay_baseunt.pas
字号:
begin
CurrentPriorRelay.Sequence:=FieldByName('Sequence').AsInteger;
CurrentPriorRelay.Project_Id:=FieldByName('Project_Id').AsInteger;
CurrentPriorRelay.Relay_Route:=FieldByName('Relay_Route').AsInteger;
CurrentPriorRelay.Relay_Id:=FieldByName('Relay_Id').AsInteger;
CurrentPriorRelay.Face_Lane:=FieldByName('Face_Lane').AsInteger;
CurrentPriorRelay.Area:=FieldByName('Area').AsInteger;
CurrentPriorRelay.WorkGroup:=FieldByName('WorkGroup').AsInteger;
CurrentPriorRelay.B_Date:=FieldByName('Begin_Date').AsDateTime;
CurrentPriorRelay.E_Date:=FieldByName('End_Date').AsDateTime;
CurrentPriorRelay.TaskTime:=trunc(CurrentPriorRelay.E_Date-CurrentPriorRelay.B_Date);
end;
Base_DataS.DataSet.Next; //返回原位置
//确定当前记录及其以后的记录数目
CurrentRecNo:=Base_DataS.DataSet.RecNo;
Mark:=Base_DataS.DataSet.GetBookmark;
Base_DataS.DataSet.Last;
LastRecNo:=Base_DataS.DataSet.RecNo;
m:=LastRecNo-CurrentRecNo+1;
Setlength(BehindRelay,m+1);
//读取当前记录及其以后的所有记录信息
Base_DataS.DataSet.GotoBookmark(Mark); //返回原位置
i:=1;
if Base_DataS.DataSet.Eof then
begin
BehindRelay[i].Sequence:=Base_DataS.DataSet.FieldByName('Sequence').AsInteger;
BehindRelay[i].Project_Id:=Base_DataS.DataSet.FieldByName('Project_Id').AsInteger;
BehindRelay[i].Relay_Route:=Base_DataS.DataSet.FieldByName('Relay_Route').AsInteger;
BehindRelay[i].Relay_Id:=Base_DataS.DataSet.FieldByName('Relay_Id').AsInteger;
BehindRelay[i].Face_Lane:=Base_DataS.DataSet.FieldByName('Face_Lane').AsInteger;
BehindRelay[i].Area:=Base_DataS.DataSet.FieldByName('Area').AsInteger;
BehindRelay[i].WorkGroup:=Base_DataS.DataSet.FieldByName('WorkGroup').AsInteger;
BehindRelay[i].B_Date:=Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime;
BehindRelay[i].E_Date:=Base_DataS.DataSet.FieldByName('End_Date').AsDateTime;
BehindRelay[i].TaskTime:=trunc(BehindRelay[i].E_Date-BehindRelay[i].B_Date);
end;
while not Base_DataS.DataSet.Eof do
begin
with Base_DataS.DataSet do
begin
BehindRelay[i].Sequence:=FieldByName('Sequence').AsInteger;
BehindRelay[i].Project_Id:=FieldByName('Project_Id').AsInteger;
BehindRelay[i].Relay_Route:=FieldByName('Relay_Route').AsInteger;
BehindRelay[i].Relay_Id:=FieldByName('Relay_Id').AsInteger;
BehindRelay[i].Face_Lane:=FieldByName('Face_Lane').AsInteger;
BehindRelay[i].Area:=FieldByName('Area').AsInteger;
BehindRelay[i].WorkGroup:=FieldByName('WorkGroup').AsInteger;
BehindRelay[i].B_Date:=FieldByName('Begin_Date').AsDateTime;
BehindRelay[i].E_Date:=FieldByName('End_Date').AsDateTime;
BehindRelay[i].TaskTime:=trunc(BehindRelay[i].E_Date-BehindRelay[i].B_Date);
next;
i:=i+1;
end;
end;
//读取接替表中的所有信息存入数组Relay中,以便在需要的时候进行数据比较和检查等处理
ReadRelayData;
Base_DataS.DataSet.GotoBookmark(Mark);
//暂时修改当前和以后的记录的Sequence字段值为从-1开始的负值,在插入的记录更新后,再指定相应的值
//以便新插入的记录的Sequence字段可以指定为当前记录的该字段的值
i:=-1;
while not Base_DataS.DataSet.Eof do
begin
Base_DataS.DataSet.Edit;
Base_DataS.DataSet.FieldByName('Sequence').AsInteger:=i;
Base_DataS.DataSet.Post; //更新后表的指针仍然指向当前记录,但是,当关闭再打开该表后,该当前记录的Sequence字段值若仍然为-1,则指针指向的记录将发生变化
Base_DataS.DataSet.Next;
i:=i-1;
end;
Base_DataS.DataSet.GotoBookmark(Mark);
Base_DataS.DataSet.Insert;
DBLookUpComboBox2.Enabled:=true;
DBLookUpComboBox3.Enabled:=true;
DBLookUpListBox1.Enabled:=true;
DBLookUpComboBox2.SetFocus;
Label5.Caption:='双击框中的接替任务或选定后回车进行插入!';
end;
procedure TRelay_BaseFrm.BitBtn1Click(Sender: TObject);
begin
if Base_DataS.DataSet.RecordCount=0 then
begin
showmessage('请先添加一个方案,然后再添加接替任务!');
exit;
end;
AddMode:=true; //标志处于添加接替任务记录状态,以便能够执行DBLookUpListBox1的OnDblClick和OnKeyPress两个事件进行更新
//读取Base_DataS数据集中的数据,以便在需要的时候进行数据比较和检查等处理
ReadRelayData;
BitBtn1.Enabled:=false;
BitBtn2.Enabled:=false;
BitBtn3.Enabled:=false;
BitBtn4.Enabled:=false;
BitBtn5.Enabled:=false;
BitBtn6.Enabled:=false;
BitBtn7.Enabled:=false;
BitBtn8.Enabled:=false;
BitBtn9.Enabled:=false;
BitBtn10.Enabled:=false;
BitBtn11.Enabled:=false;
BitBtn12.Enabled:=false;
DBGrid1.ReadOnly:=true;
DBGrid1.Enabled:=false;
//获取接替表中最后一条记录的相关信息,以便在后面添加接替任务时进行数据检查处理
LastRelay.Sequence:=GetLastRecId(Base_DataS.DataSet,'Sequence');
LastRelay.Project_Id:=GetLastRecId(Base_DataS.DataSet,'Project_Id');
LastRelay.Relay_Route:=GetLastRecId(Base_DataS.DataSet,'Relay_Route');
LastRelay.Relay_Id:=GetLastRecId(Base_DataS.DataSet,'Relay_Id');
LastRelay.Face_Lane:=GetLastRecId(Base_DataS.DataSet,'Face_Lane');
LastRelay.WorkGroup:=GetLastRecId(Base_DataS.DataSet,'WorkGroup');
LastRelay.Area:=GetLastRecId(Base_DataS.DataSet,'Area');
LastRelay.B_Date:=GetLastRecId(Base_DataS.DataSet,'Begin_Date');
LastRelay.E_Date:=GetLastRecId(Base_DataS.DataSet,'End_Date');
LastRelay.TaskTime:=trunc(LastRelay.E_Date-LastRelay.B_Date);
Base_DataS.DataSet.Append;
DBLookUpComboBox2.Enabled:=true;
DBLookUpComboBox3.Enabled:=true;
DBLookUpListBox1.Enabled:=true;
DBLookUpComboBox2.SetFocus;
Label5.Caption:='双击框中的接替任务或选定后回车进行添加!';
end;
procedure TRelay_BaseFrm.FormCreate(Sender: TObject);
var
i,n:integer;
begin
inherited;
EditMode:=false;
InsertMode:=false;
FaceIsEdit:=false;
BeginDateChange:=false;
EndDateChange:=false;
//HaveDeleted:=false;
end;
procedure TRelay_BaseFrm.BitBtn8Click(Sender: TObject);
var
BookM:Tbookmark;
CurrentRecNo,LastRecNo,m,i:integer;
begin
EditMode:=true;
//设初始状态被修改的记录的开始和结束时间没有修改,工作面也没有修改
BeginDateChange:=false;
EndDateChange:=false;
FaceIsEdit:=false;
BitBtn3.Enabled:=true;
DBGrid1.ReadOnly:=false;
DBGrid1.Enabled:=false;
BitBtn1.Enabled:=false;
BitBtn2.Enabled:=false;
BitBtn4.Enabled:=false;
BitBtn5.Enabled:=false;
BitBtn6.Enabled:=false;
BitBtn7.Enabled:=false;
BitBtn8.Enabled:=false;
BitBtn9.Enabled:=false;
BitBtn10.Enabled:=false;
BitBtn11.Enabled:=false;
BitBtn12.Enabled:=false;
DBLookUpComboBox2.Enabled:=true;
DBLookUpComboBox3.Enabled:=true;
DBLookUpListBox1.Enabled:=true;
DBLookUpComboBox2.SetFocus;
IsLast:=false;
CurrentRecNo:=Base_DataS.DataSet.RecNo;
BookM:=Base_DataS.DataSet.GetBookmark;
Base_DataS.DataSet.Last;
LastRecNo:=Base_DataS.DataSet.RecNo;
if CurrentRecNo=LastRecNo then //如果是最后一条记录
begin
IsLast:=true;
end;
Base_DataS.DataSet.GotoBookmark(BookM);
//读取当前被修改记录的信息
with Base_DataS.DataSet do
begin
Current.Sequence:=FieldByName('Sequence').AsInteger;
Current.Project_Id:=FieldByName('Project_Id').AsInteger;
Current.Relay_Route:=FieldByName('Relay_Route').AsInteger;
Current.Relay_Id:=FieldByName('Relay_Id').AsInteger;
Current.Face_Lane:=FieldByName('Face_Lane').AsInteger;
Current.Area:=FieldByName('Area').AsInteger;
Current.WorkGroup:=FieldByName('WorkGroup').AsInteger;
Current.B_Date:=FieldByName('Begin_Date').AsDateTime;
Current.E_Date:=FieldByName('End_Date').AsDateTime;
Current.TaskTime:=trunc(Current.E_Date-Current.B_Date);
end;
Label6.Visible:=true;
Label7.Visible:=true;
DateTimePicker1.Date:=Current.B_Date;
DateTimePicker2.Date:=Current.E_Date;
DateTimePicker1.Visible:=true;
DateTimePicker2.Visible:=true;
//BookM:=Base_DataS.DataSet.GetBookmark;
if Current.Sequence<>1 then
begin
//读取当前记录的前面一条信息
Base_DataS.DataSet.Prior;
with Base_DataS.DataSet do
begin
CurrentPriorRelay.Sequence:=FieldByName('Sequence').AsInteger;
CurrentPriorRelay.Project_Id:=FieldByName('Project_Id').AsInteger;
CurrentPriorRelay.Relay_Route:=FieldByName('Relay_Route').AsInteger;
CurrentPriorRelay.Relay_Id:=FieldByName('Relay_Id').AsInteger;
CurrentPriorRelay.Face_Lane:=FieldByName('Face_Lane').AsInteger;
CurrentPriorRelay.Area:=FieldByName('Area').AsInteger;
CurrentPriorRelay.WorkGroup:=FieldByName('WorkGroup').AsInteger;
CurrentPriorRelay.B_Date:=FieldByName('Begin_Date').AsDateTime;
CurrentPriorRelay.E_Date:=FieldByName('End_Date').AsDateTime;
CurrentPriorRelay.TaskTime:=trunc(CurrentPriorRelay.E_Date-CurrentPriorRelay.B_Date);
end;
Base_DataS.DataSet.Next; //返回原位置
end;
//确定当前记录及其以后的记录数目
//CurrentRecNo:=Base_DataS.DataSet.RecNo;
//Mark:=Base_DataS.DataSet.GetBookmark;
//Base_DataS.DataSet.Last;
//LastRecNo:=Base_DataS.DataSet.RecNo;
m:=LastRecNo-CurrentRecNo+1;
Setlength(BehindRelay,m+1);
//读取当前记录及其以后的所有记录信息
Base_DataS.DataSet.GotoBookmark(BookM); //返回原位置
i:=1;
while not Base_DataS.DataSet.Eof do
begin
//IsLast:=false;
with Base_DataS.DataSet do
begin
BehindRelay[i].Sequence:=FieldByName('Sequence').AsInteger;
BehindRelay[i].Project_Id:=FieldByName('Project_Id').AsInteger;
BehindRelay[i].Relay_Route:=FieldByName('Relay_Route').AsInteger;
BehindRelay[i].Relay_Id:=FieldByName('Relay_Id').AsInteger;
BehindRelay[i].Face_Lane:=FieldByName('Face_Lane').AsInteger;
BehindRelay[i].Area:=FieldByName('Area').AsInteger;
BehindRelay[i].WorkGroup:=FieldByName('WorkGroup').AsInteger;
BehindRelay[i].B_Date:=FieldByName('Begin_Date').AsDateTime;
BehindRelay[i].E_Date:=FieldByName('End_Date').AsDateTime;
BehindRelay[i].TaskTime:=trunc(BehindRelay[i].E_Date-BehindRelay[i].B_Date);
next;
i:=i+1;
end;
end;
Base_DataS.DataSet.GotoBookmark(BookM);
//读取原表中的所有记录信息
ReadRelayData;
if High(Relay)<=1 then //表中没有记录
begin
showmessage('没有数据,无法进行修改!');
EditMode:=false;
BitBtn3.Enabled:=false;
DBGrid1.ReadOnly:=true;
DBGrid1.ReadOnly:=false;
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;
ComboBox1.Enabled:=false;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.Enabled:=false;
DBLookUpListBox1.Enabled:=false;
exit;
end;
Base_DataS.DataSet.GotoBookmark(BookM);
//inherited;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -