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

📄 mrp_enter_mps1_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Mrp_Enter_Mps1_D;
Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Detail, Db, AdODB, ExtCtrls, StdCtrls, ExtEdit, Mask;

Type
  TFrm_Mrp_Enter_Mps1_D = Class(TFrm_Base_Detail)
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label9: TLabel;
    lbl_ItemName: TLabel;
    edt_Mpsqty: TEdit;
    edt_MpsremArk: TEdit;
    Extedt_ItemCode: TExtEdit;
    medt_Mpsdate: TMaskEdit;
    Lbl_MouldName: TLabel;
    Label1: TLabel;
    edt_ItemName: TEdit;
    procedure edt_MpsqtyExit(Sender: TObject);
    procedure edt_MpsremArkExit(Sender: TObject);
    procedure ItemCodeCheck(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure Extedt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Extedt_ItemCodeExit(Sender: TObject);
    procedure DateCheck(Sender: TObject);
  private
    CurrentUom:string; //记录当前'计量单位'
    Function SaveHistory:Boolean;//保存历史记录
    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SaveData;Override;
    { Public declarations }
  end;

var
  Frm_Mrp_Enter_Mps1_D: TFrm_Mrp_Enter_Mps1_D;

implementation

uses Sys_Global;

{$R *.DFM}

function checksymbol(Source:string;disptext:string):boolean;   //检查输入中是否有单引号
var
  i:integer;
  s:string;
begin
  s:=Trim(Source);
  for i:=1 to length(s) do
    if s[i]='''' then
    begin
      DispInfo(disptext+'中不能使用单引号!',1);
      Result:=False;
      exit;
    end;
  Result:=True;
end;


Function TFrm_Mrp_Enter_Mps1_D.SaveHistory;
var
  Sqltext:String;
  xx:Integer;
begin
  Try
    SqlText:='Insert MpsHistory '
            + ' (MpsMonth,ItemCode,Mpsdate,Mpsqty,Mpsstatus,'
            + ' MpsremArk,MpSchgEmployeeCode,MpSchgTime,MpsId,MpSchgType)'
            + ' Values('
            + ''''+Copy(Trim(medt_Mpsdate.Text),1,7)+''','
            +''''+Trim(Extedt_ItemCode.text)+''','
            +''''+Trim(medt_Mpsdate.Text)+''','
            +''''+Trim(edt_Mpsqty.text)+''','
            +'2,'
            +''''+Trim(edt_MpsremArk.text)+''''+','
            +''''+UserCode+''''+','
            +'Getdate(),';
    If Add then
    begin
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=' SELECT @@Identity AS xx From Mps ';
      AdoQry_Tmp.Open;
      xx:=AdoQry_Tmp.fieldbyname('xx').AsInteger;
      SqlText:=SqlText+''''+IntToStr(xx)+''','''+'增加'+''')'
    end
    Else
    begin
     { SqlText1:=' Select * '
            +' From Mps '
            +' Where ItemCode='''+AdoQry_Maintain.fieldbyname('ItemCode').AsString+''''
            +' And MpsDate='''+DateTimeToStr(AdoQry_Maintain.fieldbyname('MpsDate').AsDateTime)+'''';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText1;
      AdoQry_Tmp.Open; }
      SqlText:=SqlText+''''+IntToStr(AdoQry_Tmp.fieldbyname('Mpsid').asInteger)+''','''+'修改'+''''+')';
    end;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.ExecSQL;
    Result:=True;
  Except
    Result:=False;
  end;
end;

procedure TFrm_Mrp_Enter_Mps1_D.InitControls;
begin
  Inherited;
  If AdoQry_Maintain.RecordCount>0 Then
  begin
  with AdoQry_Maintain do
  begin
    Extedt_ItemCode.Text:=fieldbyname('ItemCode').asstring;
    medt_Mpsdate.Text:=formatdatetime('yyyy.mm.dd',fieldbyname('Mpsdate').asdatetime);
    edt_Mpsqty.Text:=FormatFloat('##0.##',fieldbyname('Mpsqty').asfloat);
    edt_MpsremArk.Text:=fieldbyname('MpsremArk').asstring;
    CurrentUom:=fieldbyname('UomName').asstring;
    lbl_ItemName.Caption:=fieldbyname('ItemName').asstring;
    edt_ItemName.Text:=lbl_ItemName.Caption;
  end;
  end
  Else
  begin
    Extedt_ItemCode.Text:='';
    medt_Mpsdate.Text:=formatdatetime('yyyy.mm.dd',Date());
    edt_Mpsqty.Text:=FormatFloat('##0.##',0);
    edt_MpsremArk.Text:='';
    CurrentUom:='';
    lbl_ItemName.Caption:='';
  end;
 if not Add then
   begin
   medt_Mpsdate.SetFocus;
   Extedt_ItemCode.Enabled:=False;
   edt_ItemName.Enabled:=False;
   end
  else
   begin
    Extedt_ItemCode.Enabled:=True;
    Extedt_ItemCode.SetFocus;
    setfocus_Control:=ExtEdt_ItemCode;
   end;

end;

procedure TFrm_Mrp_Enter_Mps1_D.SaveData;
var
  SqlText:String; Book:string;
  I,xx:Integer;
begin
  inherited;
  if(Add)then
  begin
    DbConnect.beginTrans;
    Try
      SqlText:='Insert Mps '
            +' (MpsMonth,ItemCode,Mpsdate,Mpsqty,Mpsstatus,MpsremArk)'
            +' Values('
            +''''+Copy(Trim(medt_Mpsdate.Text),1,7)+''','
            +''''+Trim(Extedt_ItemCode.text)+''','
            +''''+Trim(medt_Mpsdate.Text)+''','
            +''''+Trim(edt_Mpsqty.text)+''','
            +'2,'
            +''''+Trim(edt_MpsremArk.text)+''')';

       AdoQry_Tmp.Close;
       AdoQry_Tmp.SQL.Text:=SqlText;
       AdoQry_Tmp.ExecSQL;
//       SaveHistory;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=' SELECT @@Identity AS xx ';
      AdoQry_Tmp.Open;
      xx:=AdoQry_Tmp.fieldbyname('xx').AsInteger;

       DbConnect.CommitTrans;
    Except
      IF DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
      abort;
    end;
  end;
  if Not (Add)then
  begin
    DbConnect.beginTrans;
   { SqlText:=' Select * '
            +' From Mps '
            +' Where ItemCode='''+AdoQry_Maintain.fieldbyname('ItemCode').AsString+''''
            +' And MpsDate='''+DateTimeToStr(AdoQry_Maintain.fieldbyname('MpsDate').AsDateTime)+''''
            +' And MpsStatus=2' ;
     AdoQry_Tmp.Close;
     AdoQry_Tmp.SQL.Text:=SqlText;
     AdoQry_Tmp.Open;
     If AdoQry_Tmp.Eof Then
     begin
       IF DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
       DispInfo('该笔记录已被其它用户修改,请刷新!',3);
       abort;
     end
     Else
       I:=AdoQry_Tmp.fieldbyname('MpsId').AsInteger;
       sqltext:='select * from Mps where Mpsid='+inttostr(i);
       Executesql(AdoQry_tmp,sqltext,0);
       if strtofloat(Trim(edt_Mpsqty.Text))<AdoQry_tmp.fieldbyname('MpsFinishqty').asfloat then
         begin
           if dbconnect.InTransaction then
            dbconnect.RollBackTrans;
           DispInfo('生产订货量必须大于等于销售发货量!',3);
           edt_Mpsqty.SetFocus;
           abort;
         end;
     //SaveHistory;
     saveMpshistory(dbconnect,AdoQry_Maintain.fieldbyname('Mpsid').asinteger,userCode,1);}
    SqlText:=' Update #Mps '
            +' set MpsMonth='''+Copy(Trim(medt_Mpsdate.Text),1,7)+''','
            +' ItemCode='''+Trim(Extedt_ItemCode.text)+''','
            +' Mpsdate='''+Trim(medt_Mpsdate.text)+''','
            +' Mpsqty='+Trim(edt_Mpsqty.text)+','
            +' Mpsstatus=2,'
          //  +' MpsremArk='+quotedstr('dfdsf')
            +' MpsremArk='''+Trimright(Trimleft(edt_MpsremArk.Text))+''''
            +' where ItemCode='+quotedstr(Trim(Extedt_ItemCode.text))
            +' And Mpsdate='+quotedstr(AdoQry_Maintain.fieldbyname('Mpsdate').asstring)
            +' and Mpsstatus=2 '
            +' and Mpsqty='+floattostr(AdoQry_Maintain.fieldbyname('Mpsqty').asfloat);
     Try
       AdoQry_Tmp.Close;
       AdoQry_Tmp.Sql.clear;
       AdoQry_Tmp.Sql.Add(SqlText);
       AdoQry_Tmp.ExecSQL;

      DbConnect.CommitTrans;
     Except
       IF DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
       Abort;
     end;
   end;
   with AdoQry_Maintain do
   begin
    if Add  then
    Append
    else edit;
    fieldbyname('MpsMonth').AsString:=Copy(Trim(medt_Mpsdate.Text),1,7);
    fieldbyname('ItemCode').AsString:=Trim(Extedt_ItemCode.text);
    fieldbyname('Mpsdate').Asdatetime:=strtodatetime(Trim(medt_Mpsdate.text));
    fieldbyname('Mpsqty').Asfloat:=strtofloat(Trim(edt_Mpsqty.text));
    fieldbyname('Mpsstatus').asinteger:=2;
    fieldbyname('MpsremArk').asstring:=Trim(edt_MpsremArk.text);
    fieldbyname('ItemName').asstring:=lbl_ItemName.Caption;
    fieldbyname('UomName').AsString:=CurrentUom;
    Post;
    Book:=BookmArk;
  //  reQuery;
    BookmArk:=Book;
    if (Add) then
     begin
      saveMpshistory(dbconnect,xx,userCode,0);
     end;
  end;
end;

procedure TFrm_Mrp_Enter_Mps1_D.edt_MpsqtyExit(Sender: TObject);
var
  s:string;
begin
  inherited;
 if activecontrol.Name='btn_Cancel' then
   exit;
  s:=Trim(edt_Mpsqty.Text);
  try
    strtofloat(s);
  except
    DispInfo('输入的生产订货量错误,请重新输入!',1);
    twincontrol(sender).setfocus;
    abort;
  end;
  Edt_MpsQty.Text:=FormatFloat('##0.##',StrToFloat(Edt_MpsQty.Text));
end;

procedure TFrm_Mrp_Enter_Mps1_D.edt_MpsremArkExit(Sender: TObject);
begin
  inherited;
  if activecontrol.Name='btn_Cancel' then
    exit;
  if not checksymbol(edt_MpsremArk.text,'备注') then
  begin
    twincontrol(sender).setfocus;
    abort;
  end;
end;

procedure TFrm_Mrp_Enter_Mps1_D.ItemCodeCheck(Sender: TObject);
var
  SqlText:String;
  Ado_Temp:TAdoQuery;
begin
  inherited;
  If Activecontrol.Name='btn_Cancel' Then
    Exit;
  Ado_Temp:=tAdoQuery.Create(nil);
  Ado_Temp.Connection:=AdoQry_Maintain.Connection;
  SqlText:=' select Item.*,Uom.* '
          +' from Item left outer join Uom on Item.UomCode=Uom.UomCode '
          +' where ItemCode='+''''+Trim(Extedt_ItemCode.Text)+''''
          +' And ItemType=0';
  Ado_Temp.Close;
  Ado_Temp.SQL.Text:=SqlText;
  Ado_Temp.Open;
  if Ado_Temp.RecordCount=0 then
  begin
    DispInfo('你输入的物料代码不存在,请重新输入!',1);
    TWincontrol(sender).setfocus;
    abort;
  end
  else
    CurrentUom:=Ado_Temp.fieldbyname('UomName').asstring;
end;

procedure TFrm_Mrp_Enter_Mps1_D.btn_okClick(Sender: TObject);
var
  SqlText:String;
  Ado_Temp:TAdoQuery;
  T1,T2,T3:Boolean;
begin
  If Activecontrol.Name='btn_Cancel' Then
    Exit;
  IF StrToFloat(Edt_MpsQty.Text)<=0 Then
  begin
    DispInfo('生产订货量必须大于0',1);
    Edt_MpsQty.SetFocus;
    Abort;
  end;
  If Copy(Trim(medt_Mpsdate.Text),1,7)<>AdoQry_Maintain.fieldbyname('MpsMonth').AsString Then
    T1:=True
  Else
    T1:=False;
  If Trim(Extedt_ItemCode.text)<>Trim(AdoQry_Maintain.fieldbyname('ItemCode').AsString) then
    T2:=True
  Else
    T2:=False;
  If StrToDateTime(medt_Mpsdate.text)<>AdoQry_Maintain.fieldbyname('MpsDate').asdatetime then
    T3:=True
  Else
    T3:=False;
  if (Add) or ((not Add) and (T1  or T2 or T3)) then
  begin
    Ado_Temp:=TAdoQuery.Create(Nil);
    Ado_Temp.Connection:=AdoQry_Tmp.Connection;
    SqlText:=' select * '
            +' from Mps '
            +' where MpsMonth='+''''+Copy(Trim(medt_Mpsdate.Text),1,7)+''''
            +' And ItemCode='+''''+Trim(Extedt_ItemCode.text)+''''
            +' And Mpsdate='+''''+Trim(medt_Mpsdate.text)+'''';
    Ado_Temp.Close;
    Ado_Temp.SQL.Text:=SqlText;
    Ado_Temp.Open;
    If not Ado_Temp.Eof then
    begin
      DispInfo('该记录已经存在,你不能重复输入!',1);
      ExtEdt_ItemCode.SetFocus;
      Abort;
    end;
  end;
 // inherited;
Changed:=False;
 // inherited;
  Savedata;
  if Status='Add' then
  begin
    DispInfo('当前数据已经保存,可以继续增加!',3);
    InitControls;
    btn_ok.Enabled:=False;
  end
  else
    ModalResult:=mrOk;

end;

procedure TFrm_Mrp_Enter_Mps1_D.Extedt_ItemCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
   if(Key=120)then
     CommonHint(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode',
       '物料代码','Item','  ItemType = 0 and ItemUsable=1');
end;

procedure TFrm_Mrp_Enter_Mps1_D.Extedt_ItemCodeExit(Sender: TObject);
var
  SqlText:String;
begin
  inherited;
  If ActiveControl.Name='btn_Cancel' Then
    Exit;
  SqlText:=' Select Item.ItemName,Item.MnldTime,Uom.UomName '
          +' From Item '
          +' Left Outer Join Uom On Item.UomCode=Uom.UomCode '
          +' Where ItemCode='+''''+Trim(ExtEdt_ItemCode.Text)+''''
          +' And ItemType = 0 and ItemUsable=1';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:=SqlText;
  AdoQry_Tmp.Open;
  If AdoQry_Tmp.Eof Then
  begin
    DispInfo('输入了错误的物料代码,请重新输入!',1);
    TWincontrol(Sender).SetFocus;
    Abort;
  end;
  CurrentUom:=AdoQry_Tmp.fieldbyname('UomName').AsString;
  Lbl_ItemName.Caption:=AdoQry_Tmp.fieldbyname('ItemName').AsString;
end;

procedure TFrm_Mrp_Enter_Mps1_D.DateCheck(Sender: TObject);
begin
  If ActiveControl.Name='btn_Cancel' Then
    Exit;
   inherited;
  If SlCalendar(DbConnect,MEdt_MpsDate.Text,0)<>MEdt_MpsDate.Text Then
  begin
    DispInfo(MEdt_MpsDate.Text+'不是工作日,请重新输入!',3);
    TWincontrol(Sender).SetFocus;
    Abort;
  end;
end;

end.



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -