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

📄 mrp_enter_calendar_d.pas

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