ad_enter_workload_d.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 290 行
PAS
290 行
unit Ad_Enter_WorkLoad_D;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Detail, StdCtrls, Db, AdODB, ExtCtrls, ExtEdit, Mask, linkedit;
Type
TFrm_Ad_Enter_WorkLoad_D = Class(TFrm_Base_Detail)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
EDT_PeriodRate: TEdit;
EDT_Depreciation: TEdit;
EDT_RemArk: TExtEdit;
Label5: TLabel;
lbl_DeptName: TLabel;
Label6: TLabel;
Edt_AssetCode: TLinkEdit;
Label7: TLabel;
EDT_AssetName: TEdit;
EDT_Intending: TExtEdit;
Label23: TLabel;
Label25: TLabel;
MEDT_Month: TMaskEdit;
EDT_WorkLoad: TEdit;
procedure Edt_AssetCodeExit(Sender: TObject);
procedure Edt_AssetCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_AssetCodeButtonClick(Sender: TObject);
procedure MEDT_MonthExit(Sender: TObject);
procedure EDT_WorkLoadChange(Sender: TObject);
procedure EDT_WorkLoadExit(Sender: TObject);
private
OldMonth:String;
Function getMonth:String;
procedure SaveHistoryWorkLoad(ChgType:String);
{ Private declarations }
public
procedure InitControls; Override;
procedure SaveData; Override;
{ Public declarations }
end;
var
Frm_Ad_Enter_WorkLoad_D: TFrm_Ad_Enter_WorkLoad_D;
implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Ad_Enter_WorkLoad_D.InitControls;
begin
if Add then
begin
SetFocus_Control:=Edt_AssetCode;
Edt_AssetCode.Enabled:=True;
end
else
SetFocus_Control:=MEDT_Month;
inherited;
with AdoQry_Maintain do
begin
Edt_AssetCode.Text:=fieldbyname('AssetCode').AsString;
EDT_AssetName.Text:=fieldbyname('AssetName').AsString;
// EDT_Intending.Text:=fieldbyname('Intending').AsString;
If fieldbyname('Intending').AsString='' Then EDT_Intending.Text:='0' Else EDT_Intending.Text:=fieldbyname('Intending').AsString;
MEDT_Month.Text:=fieldbyname('YearMonth').AsString;
If fieldbyname('PCDepreciation').AsString='' Then EDT_PeriodRate.Text:='0' Else EDT_PeriodRate.Text:=fieldbyname('PCDepreciation').AsString;
If fieldbyname('WorkLoad').AsString='' Then EDT_WorkLoad.Text:='0' Else EDT_WorkLoad.Text:=fieldbyname('WorkLoad').AsString;
// EDT_PeriodRate.Text:=fieldbyname('PeriodRate').AsString;
EDT_Depreciation.Text:=fieldbyname('Depreciation').AsString;
EDT_RemArk.Text:=fieldbyname('RemArk').AsString;
OldMonth:=fieldbyname('YearMonth').AsString;
end;
if not Add then Edt_AssetCode.Enabled:=False Else
begin
EDT_Intending.Text:='0';
EDT_PeriodRate.Text:='0';
EDT_WorkLoad.Text:='0';
MEDT_Month.Text:=getMonth;
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.SaveData;
var
ChgType:String;
begin
inherited;
with AdoQry_Tmp do
begin
Close;
if(Add)then
begin
SQL.Text:='Insert into Ad_WorkLoad(AssetCode,YearMonth,WorkLoad,Depreciation,RemArk)'
+' Values('
+' '''+Edt_AssetCode.Text+''''
+','''+MEDT_Month.Text+''''
+','''+EDT_WorkLoad.Text+''''
+','''+EDT_Depreciation.Text+''''
+','''+EDT_RemArk.Text+''''
+')';
ChgType:='增加';
end else
begin
SQL.Text:='Update Ad_WorkLoad'
+' Set YearMonth='''+MEDT_Month.Text+''''
+',WorkLoad='''+EDT_WorkLoad.Text+''''
+',Depreciation='''+EDT_Depreciation.Text+''''
+',RemArk='''+EDT_RemArk.Text+''''
+' Where AssetCode='''+Edt_AssetCode.Text+''' And YearMonth='''+OldMonth+''' ';
ChgType:='修改';
end;
ExecSQL;
end;
SaveHistoryWorkLoad(ChgType);
If MEDT_Month.Text=FormatDateTime('yyyy.mm',Date) Then
begin
with AdoQry_Maintain do
begin
fieldbyname('AssetCode').AsString:=Edt_AssetCode.Text;
fieldbyname('AssetName').AsString:=EDT_AssetName.Text;
fieldbyname('Intending').AsString:=EDT_Intending.Text;
fieldbyname('YearMonth').AsString:=MEDT_Month.Text;
fieldbyname('WorkLoad').AsString:=EDT_WorkLoad.Text;
fieldbyname('PCDepreciation').AsString:=EDT_PeriodRate.Text;
fieldbyname('Depreciation').AsString:=EDT_Depreciation.Text;
fieldbyname('RemArk').AsString:=EDT_RemArk.Text;
Post;
end;
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.SaveHistoryWorkLoad(ChgType:String);
begin
with AdoQry_Tmp do
begin
Close;
Sql.clear;
SQL.Text:='Insert into Ad_WordkLoadHistory(AssetCode,YearMonth,WorkLoad,Depreciation,RemArk,ChgEmployeeCode,ChgTime,ChgType)'
+' Values('
+' '''+Edt_AssetCode.Text+''''
+','''+MEDT_Month.Text+''''
+','''+EDT_WorkLoad.Text+''''
+','''+EDT_Depreciation.Text+''''
+','''+EDT_RemArk.Text+''''
+','''+UserCode+''''
+',getdate()'
+','''+ChgType+''''
+')';
ExecSQL;
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeExit(Sender: TObject);
begin
inherited;
if(ActiveControl.Name='btn_Cancel')then
Abort;
if TCustomEdit(Sender).Text <>'' then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text:=' select AssetCode,AssetName,Intending,PCDepreciation from Ad_AssetCard '+
' Where DepreciationWay=2 '
+' And AssetCode= '''+TCustomEdit(Sender).Text+''' ';
AdoQry_Tmp.Open;
if not AdoQry_Tmp.Eof then
begin
EDT_AssetName.Text := AdoQry_Tmp.fieldbyname('AssetName').AsString;
EDT_Intending.Text := AdoQry_Tmp.fieldbyname('Intending').AsString;
EDT_PeriodRate.Text := AdoQry_Tmp.fieldbyname('PCDepreciation').AsString;
end
else
begin
DispInfo('固定资产编号错误,请重新输入',1);
TWinControl(Sender).SetFocus;
Abort;
end;
end else
begin
EDT_AssetName.Text:='';
EDT_Intending.Text:='';
EDT_PeriodRate.Text:='';
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
If key=120 Then
CommOnHint(Sender,AdoQry_Tmp,'AssetName','固定资产名称','AssetCode',
'固定资产编号',' Ad_AssetCard ','DepreciationWay=''2'' ');
end;
procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeButtonClick(
Sender: TObject);
begin
inherited;
CommOnHint(Sender,AdoQry_Tmp,'AssetName','固定资产名称','AssetCode',
'固定资产编号',' Ad_AssetCard ','DepreciationWay=''2'' ');
end;
procedure TFrm_Ad_Enter_WorkLoad_D.MEDT_MonthExit(Sender: TObject);
begin
inherited;
MonthCheck(Sender);
if (Add)or((not Add) and
(TEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('YearMonth').AsString)) then
begin
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select YearMonth From Ad_WorkLoad '+
'Where YearMonth='''+TEdit(Sender).Text+''' '+
'And AssetCode='''+Edt_AssetCode.Text+''' ');
Open;
if fieldbyname('YearMonth').AsString<>'' then
begin
DispInfo(' 固定资产编号与月份已经存在,不允许增加或修改! ',1);
TWinControl(Sender).SetFocus;
Abort;
end;
end;
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.EDT_WorkLoadChange(Sender: TObject);
begin
inherited;
If EDT_WorkLoad.Text<>'' Then
begin
FloatCheck(Sender);
EDT_Depreciation.Text:=FloatToStr(StrToFloat(EDT_PeriodRate.Text)*StrToFloat(EDT_WorkLoad.Text));
end;
end;
procedure TFrm_Ad_Enter_WorkLoad_D.EDT_WorkLoadExit(Sender: TObject);
begin
inherited;
If EDT_WorkLoad.Text<>'' Then
begin
FloatCheck(Sender);
if (Add)or((not Add) and
(TEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('WorkLoad').AsString)) then
begin
If StrToFloat(EDT_WorkLoad.Text)>StrToFloat(EDT_Intending.Text) Then
begin
DispInfo('本月月工作量累计值不能大于预计完成工作量',3);
Abort;
end;
end;
EDT_Depreciation.Text:=FloatToStr(StrToFloat(EDT_PeriodRate.Text)*StrToFloat(EDT_WorkLoad.Text));
end;
end;
function TFrm_Ad_Enter_WorkLoad_D.getMonth: String;
var
Month:String;
begin
With AdoQry_Tmp Do
begin
Close;
Sql.clear;
Sql.Text:='select dateAdd(Month,1,max(YearMonth)+''.01'') m_Month from Ad_MonthCheckout';
Open;
If Eof Then
begin
Close;
Sql.clear;
SQL.Add('select ParamValueC m_Month from Ad_Param Where ParamCode=''StartUseMonth''');
Open;
end;
Month:=fieldbyname('m_Month').AsString;
end;
Result:=Month;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?