📄 mrp_enter_calendar_d.pas
字号:
unit Mrp_Enter_Calendar_D;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Detail, StdCtrls, Mask, Db, AdODB, ExtCtrls;
Type
TFrm_Mrp_Enter_Calendar_D = Class(TFrm_Base_Detail)
MEdt_StArt_Date: TMaskEdit;
Medt_End_Date: TMaskEdit;
Ckbx_week1: TCheckBox;
Ckbx_week2: TCheckBox;
Ckbx_week3: TCheckBox;
Ckbx_week4: TCheckBox;
Ckbx_week5: TCheckBox;
Ckbx_week6: TCheckBox;
Ckbx_week7: TCheckBox;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
AdoQry_Count: TAdoQuery;
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Lbl_Week: TLabel;
procedure btn_okClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
private
BeforeModifyValue:Integer;//为修改状态时记录最初值
CurrentCheckBox:TCheckBox;//定义修改当前的CheckBox
CurrentWeekDay:String;//日期对应星期号
{ Private declarations }
public
procedure InitControls; Override;
procedure SaveData;Override;
{ Public declarations }
end;
var
Frm_Mrp_Enter_Calendar_D: TFrm_Mrp_Enter_Calendar_D;
implementation
uses Mrp_Enter_Calendar, Sys_Global, Public_Show;
{$R *.DFM}
procedure TFrm_Mrp_Enter_Calendar_D.InitControls;
var
SqlText:String;
I:Integer;
Year1,Month1,Day1:Word;
begin
If (Add) Then
SetFocus_Control:=MEdt_StArt_Date;
AdoQry_Count.Connection:=DbConnect;
If (Add) Then
begin
SqlText:='Select Max(SDate) As SDate, Count(WorkDay) As Mm From Calendar ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.fieldbyname('Mm').AsInteger=0 Then
begin
MEdt_StArt_Date.Text:=Copy(FormatDateTime('yyyy.mm.dd',date),1,7)+'.01';
DeCodeDate(Date,Year1,Month1,Day1);
Day1:=1;
If (Month1>8) Then
MEdt_End_Date.Text:=FormatDateTime('yyyy.mm.dd',EnCodeDate(Year1+1,(Month1+4)-12,Day1))
Else
MEdt_End_Date.Text:=FormatDateTime('yyyy.mm.dd',EnCodeDate(Year1,Month1+4,Day1));
MEdt_StArt_Date.Enabled:=True;
end
Else
begin
MEdt_StArt_Date.Text:=FormatDateTime('yyyy.mm.dd',AdoQry_Tmp.fieldbyname('SDate').AsDateTime+1);
MEdt_End_Date.Text:=FormatDateTime('yyyy.mm.dd',AdoQry_Tmp.fieldbyname('SDate').AsDateTime+120);
MEdt_StArt_Date.Enabled:=False;
end;
Lbl_Week.Visible:=False;
Ckbx_Week1.Enabled:=True;
Ckbx_Week2.Enabled:=True;
Ckbx_Week3.Enabled:=True;
Ckbx_Week4.Enabled:=True;
Ckbx_Week5.Enabled:=True;
Ckbx_Week6.Enabled:=True;
Ckbx_Week7.Enabled:=True;
Ckbx_Week1.Checked:=True;
Ckbx_Week2.Checked:=True;
Ckbx_Week3.Checked:=True;
Ckbx_Week4.Checked:=True;
Ckbx_Week5.Checked:=True;
Ckbx_Week6.Checked:=False;
Ckbx_Week7.Checked:=False;
MEdt_End_Date.Enabled:=True;
end; //状态为增加时
If (Not Add) Then
begin
BeforeModifyValue:=AdoQry_Maintain.fieldbyname('WorkDay').AsInteger;//记录未修改前值
Lbl_Week.Visible:=True;
Ckbx_Week1.Checked:=False;
Ckbx_Week2.Checked:=False;
Ckbx_Week3.Checked:=False;
Ckbx_Week4.Checked:=False;
Ckbx_Week5.Checked:=False;
Ckbx_Week6.Checked:=False;
Ckbx_Week7.Checked:=False;
Ckbx_Week1.Enabled:=False;
Ckbx_Week2.Enabled:=False;
Ckbx_Week3.Enabled:=False;
Ckbx_Week4.Enabled:=False;
Ckbx_Week5.Enabled:=False;
Ckbx_Week6.Enabled:=False;
Ckbx_Week7.Enabled:=False;
MEdt_StArt_Date.Text:=FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('Sdate').AsDateTime);
MEdt_End_Date.Text:=FormatDateTime('yyyy.mm.dd',AdoQry_Maintain.fieldbyname('Sdate').AsDateTime);
MEdt_StArt_Date.Enabled:=False;
MEdt_End_Date.Enabled:=False;
SqlText:=' set dateFirst 1 '
+' select datepArt(weekday,'''+AdoQry_Maintain.fieldbyname('Sdate').AsString+''' ) as dates';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SQlText;
AdoQry_Tmp.Open;
I:=AdoQry_Tmp.fieldbyname('dates').asinteger;
// I:=DayOfWeek(AdoQry_Maintain.fieldbyname('Sdate').AsDateTime);
Case I Of
7:
begin
Ckbx_Week7.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week7.Checked:=True
Else
Ckbx_Week7.Checked:=False;
CurrentCheckBox:=Ckbx_Week7;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期日';
end;
1:
begin
Ckbx_Week1.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week1.Checked:=True
Else
Ckbx_Week1.Checked:=False;
CurrentCheckBox:=Ckbx_Week1;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期一';
end;
2:
begin
Ckbx_Week2.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week2.Checked:=True
Else
Ckbx_Week2.Checked:=False;
CurrentCheckBox:=Ckbx_Week2;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期二';
end;
3:
begin
Ckbx_Week3.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week3.Checked:=True
Else
Ckbx_Week3.Checked:=False;
CurrentCheckBox:=Ckbx_Week3;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期三';
end;
4:
begin
Ckbx_Week4.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week4.Checked:=True
Else
Ckbx_Week4.Checked:=False;
CurrentCheckBox:=Ckbx_Week4;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期四';
end;
5:
begin
Ckbx_Week5.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week5.Checked:=True
Else
Ckbx_Week5.Checked:=False;
CurrentCheckBox:=Ckbx_Week5;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期五';
end;
6:
begin
Ckbx_Week6.Enabled:=True;
IF AdoQry_Maintain.fieldbyname('WorkDay').AsInteger=1 Then
Ckbx_Week6.Checked:=True
Else
Ckbx_Week6.Checked:=False;
CurrentCheckBox:=Ckbx_Week6;
Lbl_Week.Caption:=DateTimeToStr(AdoQry_Maintain.fieldbyname('SDate').AsDateTime)+'是星期六';
end;
end;
end; //状态修改时
Inherited;
end;
procedure TFrm_Mrp_Enter_Calendar_D.SaveData;
var
SqlText:String;
Temp_Value:String;
ww,Temp_Value1:Integer;
I,DayOrdinal,WeekDayOrdinal,x:Integer;
begin
DbConnect.beginTrans;
Try
If (Not Add) Then
begin
If CurrentCheckBox.Checked Then
Temp_Value:='1'
Else
Temp_Value:='0'; //end if
IF BeforeModifyValue=StrToInt(Temp_Value) Then
begin
DbConnect.RollBackTrans;
AdoQry_Maintain.ReQuery;
Exit;
end;
If (BeforeModifyValue=0) And (StrToInt(Temp_Value)=1) Then //由非工作日变为工作日的情况
begin
SqlText:=' update Calendar '
+' Set DayOrdinal=DayOrdinal+1'
+' Where 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('''+DatetimetoStr(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;//更新周天序号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -