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

📄 mrp_enter_msitemassign_d.pas

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

Interface

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

Type
  TFrm_Mrp_Enter_MsItemAssign_D = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Extedt_ItemCode: TExtEdit;
    Label2: TLabel;
    lbl_ItemName: TLabel;
    Label4: TLabel;
    Extedt_rate: TExtEdit;
    Label5: TLabel;
    Extedt_qty: TExtEdit;
    Label6: TLabel;
    Extedt_PmCode: TComboBox;
    Label3: TLabel;
    Extedt_Halfrate: TExtEdit;
    procedure Extedt_ItemCodeExit(Sender: TObject);
    procedure Extedt_rateExit(Sender: TObject);
    procedure Extedt_qtyExit(Sender: TObject);
    procedure Extedt_PmCodeExit(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure Extedt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    function getUomName(ItemCode:string):string;
    procedure InitControls; Override;
    procedure SaveData;Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
    { Public declarations }
  end;

var
  Frm_Mrp_Enter_MsItemAssign_D: TFrm_Mrp_Enter_MsItemAssign_D;

implementation
uses Sys_Global;
{$R *.DFM}

{ TFrm_Mrp_Enter_MsItemAssign_D }

procedure TFrm_Mrp_Enter_MsItemAssign_D.SaveData;
var tmpPmCode:integer;
begin
  inherited;

if (Add) then
 with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.Add('insert into msItemAssign Values('+quotedstr(Extedt_ItemCode.Text)+','+Extedt_rate.text+','+Extedt_qty.Text+','+inttostr(Extedt_PmCode.Itemindex)+','+Extedt_Halfrate.text+')');
    Prepared;
    execsql;
  end
else
   with AdoQry_tmp do
     begin
     if Extedt_PmCode.Itemindex=1 then
         tmpPmCode:=2
     else tmpPmCode:=0;
    Close;
    sql.clear;
    sql.Add('update msItemAssign set ItemCode='+quotedstr(Extedt_ItemCode.Text)+','+'Assignrate='+Extedt_rate.text+',halfAssignrate='+Extedt_Halfrate.text+',Assignqty='+Extedt_qty.Text+',PmCode='+inttostr(tmpPmCode)
            +' where ItemCode='+quotedstr(AdoQry_Maintain.fieldbyname('ItemCode').asstring));
    Prepared;
    execsql;
  end;
 with AdoQry_Maintain do
  begin
    fieldbyname('ItemCode').AsString:=Extedt_ItemCode.Text;
    fieldbyname('ItemName').AsString:=lbl_ItemName.Caption;
    fieldbyname('UomName').asstring:=getUomName(Extedt_ItemCode.text);
    fieldbyname('Assignrate').Asfloat:=strtofloat(Extedt_rate.text);
    fieldbyname('halfAssignrate').Asfloat:=strtofloat(Extedt_Halfrate.text);
    fieldbyname('Assignqty').asfloat:=strtofloat(Extedt_qty.text);
    if Extedt_PmCode.ItemIndex=1 then
    fieldbyname('PmCode').asinteger:=2;
    if Extedt_PmCode.ItemIndex=0 then
    fieldbyname('PmCode').asinteger:=Extedt_PmCode.Itemindex;
    Post;
  end;

end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.InitControls;
begin
if (Add) then
 begin
  SetFocus_Control:=Extedt_ItemCode;
   Extedt_ItemCode.Enabled:=True;
  end
else
 SetFocus_Control:=Extedt_rate;
  inherited;
  with AdoQry_Maintain do
  begin
    Extedt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
    lbl_ItemName.Caption:=fieldbyname('ItemName').asstring;
    Extedt_rate.text:=floattostr(fieldbyname('Assignrate').asfloat);
    Extedt_Halfrate.text:=floattostr(fieldbyname('halfAssignrate').asfloat);
    Extedt_qty.text:=floattostr(fieldbyname('Assignqty').asfloat);
    if fieldbyname('PmCode').asinteger=2 then
     Extedt_PmCode.Itemindex:=1
    else
    Extedt_PmCode.Itemindex:=fieldbyname('PmCode').asinteger;
  end;
if not Add then  Extedt_ItemCode.Enabled:=False;

end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.Extedt_ItemCodeExit(
  Sender: TObject);
begin
 // inherited;
  if ActiveControl.Name='btn_Cancel' then
    exit;
if  Trim(Extedt_ItemCode.text)='' then
  begin
    DispInfo('物料代码不能为空!',3);
    TWinControl(Sender).SetFocus;
    abort;
  end;
if Add then
  with AdoQry_tmp do
   begin
     Close;
     sql.clear;
     sql.Add('select * from Item where PmCode=3 and ItemCode='+quotedstr(Extedt_ItemCode.text));
     open;
     if eof then
       begin
        DispInfo('请输入正确的物料代码!',3);
        Extedt_ItemCode.SelectAll;
        Extedt_ItemCode.SetFocus;
        abort;
       end;
     lbl_ItemName.Caption:=fieldbyname('ItemName').asstring;
   end;

  if(Add)or((not Add)and
    (TExtEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('ItemCode').AsString))then
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add('Select ItemCode From msItemAssign Where ItemCode='''+TExtEdit(Sender).Text+'''');
      Open;
      if fieldbyname('ItemCode').AsString<>'' then
      begin
        DispInfo('该物料代码已经存在,不允许增加或修改!',3);
        TWinControl(Sender).SetFocus;
        Abort;
      end;
    end;
  end;

end;

function TFrm_Mrp_Enter_MsItemAssign_D.getUomName(
  ItemCode: string): string;
begin
Result:='';
with AdoQry_tmp do
  begin
   Close;
   sql.clear;
   sql.Add('select UomName from Uom,Item where Item.UomCode*=Uom.UomCode and ItemCode='+quotedstr(ItemCode));
   open;
   Result:=fieldbyname('UomName').asstring;
  end;
end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.Extedt_rateExit(Sender: TObject);
begin
  inherited;
if activecontrol.Name='btn_Cancel' then
  exit;
try
  strtofloat(Extedt_rate.text);
except
  DispInfo('自制比例必须是0到100之间的数字,请重新输入!',3);
  Extedt_rate.SelectAll;
  Extedt_rate.SetFocus;
  abort;
end;

if not ((strtofloat(Extedt_rate.text)>=0) and (strtofloat(Extedt_rate.text)<=100)) then
  begin
  DispInfo('自制比例必须是0到100之间的数字,请重新输入!',3);
  Extedt_rate.SelectAll;
  Extedt_rate.SetFocus;
  abort;
  end;
try
  strtofloat(Extedt_Halfrate.text);
except
  DispInfo('委外加工比例必须是0到100之间的数字,请重新输入!',3);
  Extedt_Halfrate.SelectAll;
  Extedt_Halfrate.SetFocus;
  abort;
end;

if not ((strtofloat(Extedt_Halfrate.text)>=0) and (strtofloat(Extedt_Halfrate.text)<=100)) then
  begin
  DispInfo('委外加工比例必须是0到100之间的数字,请重新输入!',3);
  Extedt_Halfrate.SelectAll;
  Extedt_Halfrate.SetFocus;
  abort;
  end;

end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.Extedt_qtyExit(Sender: TObject);
begin
  inherited;
if activecontrol.Name='btn_Cancel' then
  exit;

try
  strtofloat(Extedt_qty.text);
except
  DispInfo('分配数量必须是大于等于0的数字,请重新输入!',3);
  Extedt_qty.SelectAll;
  Extedt_qty.SetFocus;
  abort;
end;
 if not ((strtofloat(Extedt_qty.text)>=0)) then
  begin
  DispInfo('分配数量必须是大于等于0的数字,请重新输入!',3);
  Extedt_qty.SelectAll;
  Extedt_qty.SetFocus;
  abort;
  end;



end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.SetStatus(CurrentStatus: String;
  var EnableControls: String);
begin
 inherited;
 if Currentstatus='Query' then
   enablecontrols:='Extedt_rate,Extedt_qty,Extedt_PmCode,';
end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.Extedt_PmCodeExit(Sender: TObject);
begin
  inherited;
if activecontrol.Name='btn_Cancel' then
  exit;

if not ((strtoint(Extedt_PmCode.Text)=0) or (strtoint(Extedt_PmCode.text)=2)) then
  begin
    DispInfo('制购码必须为0或2',3);
    Extedt_PmCode.SelectAll;
    Extedt_PmCode.SetFocus;
    abort;
  end;
end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.btn_okClick(Sender: TObject);
begin
if (((strtofloat(Extedt_rate.Text)>0) or (strtofloat(Extedt_Halfrate.Text)>0)) and (strtofloat(Extedt_qty.Text)>0)) then
   begin
    DispInfo('您只能输入自制比例和委外加工比例或只输入分配数量,请调整!',3);
    Extedt_rate.SetFocus;
    exit;
   end

else if (((strtofloat(Extedt_rate.Text)=0) and (strtofloat(Extedt_Halfrate.Text)=0)) and (strtofloat(Extedt_qty.Text)=0)) then
   begin
    DispInfo('自制比例、委外加工比例和分配数量不能同时为0,请调整!',3);
   Extedt_rate.SetFocus;
    exit;
   end
else if  strtofloat(Extedt_qty.Text)=0 then 
if  strtofloat(Extedt_rate.Text)+strtofloat(Extedt_Halfrate.Text)<>100 then
    begin
    DispInfo('自制比例和委外加工比例之和必须为100,请调整!',3);
    Extedt_rate.SetFocus;
    exit;

    end;
  inherited;

end;

procedure TFrm_Mrp_Enter_MsItemAssign_D.Extedt_ItemCodeKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key=120 then
    commonHint(Extedt_ItemCode,AdoQry_tmp,'ItemName','物料描述','ItemCode','物料代码','Item','PmCode=3')

end;

end.

⌨️ 快捷键说明

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