📄 mrp_enter_msitemassign_d.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 + -