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