⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrp_enter_calendar_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -