📄 mrp_enter_calendar_d.pas
字号:
Sqltext:=' Select Max(DayOrdinal) As DayOrdinal '
+' From Calendar '
+' where Sdate<'''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''''
+' And workDay=1';
AdoQry_Tmp.Close;
AdoQry_Tmp.Sql.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
DayOrdinal:=0;
end
Else
begin
DayOrdinal:=AdoQry_Tmp.fieldbyname('DayOrdinal').AsInteger;
end; //选出最大天号
Sqltext:=' Select Max(WeekDayOrdinal) As WeekDayOrdinal '
+' From Calendar '
+' where Year(SDate)=Year('''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''')'
+' And Sdate< '''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''''
+' And workDay=1 '
+' And DatePArt(Week,SDate)=DatePArt(week,'''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.Sql.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
WeekDayOrdinal:=0;
end
Else
begin
WeekDayOrdinal:=AdoQry_Tmp.fieldbyname('WeekDayOrdinal').AsInteger;
end; //选出最大周天序号
SqlText:='Update Calendar set WorkDay='''+Temp_Value+''','
+' DayOrdinal='''+IntToStr(DayOrdinal+1)+''','
+' WeekDayOrdinal='+''''+IntToStr(WeekDayOrdinal+1)+''''
+' Where SDate='''+DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
end; // 更新当前修改数据
If (BeforeModifyValue=1) And (StrToInt(Temp_Value)=0) Then //由工作日变为非工作日的情况
begin
SqlText:=' update Calendar '
+' Set DayOrdinal=DayOrdinal-1'
+' Where Year(Sdate)=Year('''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''')'
+' And Sdate>'''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''''
+' And WorkDay=1';
AdoQry_Tmp.Close;
AdoQry_Tmp.Sql.Text:=SqlText;
AdoQry_Tmp.ExecSQL;//更新天序号
SqlText:=' update Calendar '
+' Set WeekDayOrdinal=WeekDayOrdinal-1'
+' Where Year(SDate)=Year('''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''')'
+' And Sdate>'''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''''
+' And WorkDay=1 '
+' And DatePArt(Week,SDate)=DatePArt(Week,'+''''+FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.Sql.Text:=SqlText;
AdoQry_Tmp.ExecSQL;//更新周天序号
SqlText:=' Update Calendar set WorkDay='''+Temp_Value+''','
+' DayOrdinal=Null'+','
+' WeekDayOrdinal=Null'
+' Where SDate='''+DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
end;
end; //end begin (Not Add0
If (Add) Then
begin
I:=0;
SqlText:='Select DateDiff(day,'''+MEdt_StArt_Date.Text+''',+'''+MEdt_End_Date.Text+''') As x';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
x:=AdoQry_Tmp.fieldbyname('x').AsInteger;
While (StrToDateTime(MEdt_StArt_Date.text)+I)<=StrtoDateTime(Medt_End_Date.text) do
begin
Frm_Public_Show.Lbl_Show.Caption:='正在保存数据,请稍等......'+FormatFloat('##0',I/x*100)+'%';
Frm_Public_Show.Visible:=True;
Application.ProcessMessages;
SqlText:=' set dateFirst 1 '
+' select datepArt(weekday,'''+datetimetostr(StrToDateTime(MEdt_StArt_Date.text)+I)+''' ) as dates';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SQlText;
AdoQry_Tmp.Open;
ww:=AdoQry_Tmp.fieldbyname('dates').asinteger;
case ww Of // DayOfWeek(StrToDateTime(MEdt_StArt_Date.text)+I)
7:
begin
IF Ckbx_week7.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期日';
end;
1:
begin
If Ckbx_week1.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期一';
end;
2:
begin
If Ckbx_week2.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期二';
end;
3:
begin
If Ckbx_week3.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期三';
end;
4:
begin
If Ckbx_week4.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期四';
end;
5:
begin
If Ckbx_week5.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期五';
end;
6:
begin
If Ckbx_week6.checked Then
Temp_Value1:=1
Else
Temp_Value1:=0;
CurrentWeekDay:='星期六';
end;
end;
SqlText:=' Select Max(DayOrdinal) As MaxDay '
+' From Calendar Where WorkDay=1 '
+' And SDate<'''+FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
IF AdoQry_Tmp.Eof Then
DayOrdinal:=0
Else
DayOrdinal:=AdoQry_Tmp.fieldbyname('MaxDay').AsInteger;
SqlText:=' Select Max(WeekDayOrdinal) As WeekDayOrdinal '
+' From Calendar '
+' Where WorkDay=1 '
+' And Year(SDate)='
+''''+Copy(FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I),1,4)+''''
+' And DatePArt(Week,SDate)=DatepArt(Week,'''+FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I)+''')'
+' And SDate<'+''''+FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
IF AdoQry_Tmp.fieldbyname('WeekDayOrdinal').AsInteger=0 Then
WeekDayOrdinal:=0
Else
WeekDayOrdinal:=AdoQry_Tmp.fieldbyname('WeekDayOrdinal').AsInteger;
SqlText:='Insert Calendar '
+' (SDate,WorkDay,WeekOrdinal,DayOrdinal,WeekDayOrdinal,DayOfWeek) Values( '
+''''+FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I)+''','
+''''+IntToStr(Temp_Value1)+''','
+' DatePArt(week,'''+FormatDateTime('yyyy.mm.dd',StrToDateTime(MEdt_StArt_Date.text)+I)+'''),';
If Temp_Value1=0 Then
SqlText:=Sqltext+'Null,Null,'
Else
SqlText:=Sqltext+''''+IntToStr(DayOrdinal+1)+''','''+IntToStr(WeekDayOrdinal+1)+''',';
Sqltext:=SqlText+''''+CurrentWeekDay+''')';
AdoQry_Count.Close;
AdoQry_Count.Prepared;
AdoQry_Count.SQL.Text:=SqlText;
AdoQry_Count.ExecSQL; //处理完成结束日期之前的数据
Application.ProcessMessages;
I:=I+1;
end; //end While
end; //end if (Add)
DbConnect.CommitTrans;
Frm_Public_Show.Visible:=False;
AdoQry_Maintain.ReQuery;
Except
DbConnect.RollBackTrans;
Frm_Public_Show.Visible:=False;
Abort;
end;
end;
procedure TFrm_Mrp_Enter_Calendar_D.btn_okClick(Sender: TObject);
var
SqlText:String;
begin
If StrToDateTime(Medt_StArt_Date.Text)>StrToDateTime(Medt_End_Date.Text) Then
begin
DispInfo('开始日期大于了结束日期,请重设!',1);
Abort;
end;
If (Add) Then
begin
AdoQry_Tmp.Close;
SqlText:='Select * '
+' From Calendar '
+' Where SDate>='+''''+MEdt_StArt_Date.Text+''''
+' And SDate<='+''''+MEdt_End_Date.Text+'''';
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
IF Not AdoQry_Tmp.Eof Then
begin
DispInfo('在指定日期段内的计划控制工作日历已经存在'+#13+#10+' 你不能重复增加!',1);
MEdt_StArt_Date.SetFocus;
Abort;
end;
end;
inherited;
end;
procedure TFrm_Mrp_Enter_Calendar_D.FormCreate(Sender: TObject);
begin
inherited;
Frm_Public_Show:=TFrm_Public_Show.Create(Application);
end;
procedure TFrm_Mrp_Enter_Calendar_D.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
Frm_Public_Show.Close;
end;
procedure TFrm_Mrp_Enter_Calendar_D.FormActivate(Sender: TObject);
begin
Inherited;
If (Add) Then
Btn_Ok.Enabled:=True
Else
Btn_Ok.Enabled:=False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -