ad_enter_assetcardusedept.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 213 行

PAS
213
字号
unit Ad_Enter_AssetCardUseDept;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
  ExtCtrls, ComCtrls, ToolWin, StdCtrls, Mask, ExtEdit, linkedit,Ad_Enter_AssetCard_D,
  jpeg;

Type
  TFrm_Ad_Enter_AssetCardUseDept = Class(TFrm_Base_Entry_Body)
    Lab_ShipAddressName: TLabel;
    Lab_SaleTermName: TLabel;
    Lab_CurrencyName: TLabel;
    Lab_SaleDeptName: TLabel;
    Lab_CustomerName: TLabel;
    Lab_SaleEmployeeName: TLabel;
    Label2: TLabel;
    Label1: TLabel;
    Edt_AssetCode: TEdit;
    Label3: TLabel;
    EDT_AssetName: TEdit;
    Label24: TLabel;
    EDT_DepositaryCode: TLinkEdit;
    EDT_DepositaryName: TExtEdit;
    Label15: TLabel;
    MEDT_InAccountDate: TMaskEdit;
    Label25: TLabel;
    MEDT_StartUseDate: TMaskEdit;
    Label26: TLabel;
    EDT_AdChangeTypeCode: TLinkEdit;
    EDT_AdChangeTypeName: TExtEdit;
    Label27: TLabel;
    EDT_UseStatusCode: TLinkEdit;
    EDT_UseStatusName: TExtEdit;
    Label18: TLabel;
    EDT_FirstFAmount: TExtEdit;
    Label11: TLabel;
    CMBX_DepreciationWay: TComboBox;
    Label19: TLabel;
    EDT_IntendingPeriod: TExtEdit;
    AdoQry_BodyAssetCode: TStringField;
    AdoQry_BodyDeptCode: TStringField;
    AdoQry_BodyAssignRate: TFloatField;
    AdoQry_BodyRemArk: TStringField;
    AdoQry_BodyDeptName: TStringField;
    AdoQry_BodykmCode: TStringField;
    AdoQry_BodykmName: TStringField;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Act_SaveExecute(Sender: TObject);
  private
     AssetCard_D:TFrm_Ad_Enter_AssetCard_D;
     procedure SaveBodyInfo;
    { Private declarations }
  public
    procedure init(Sender:TObject;AdOConnection:TAdOConnection;HeadText:Array of String;isQuery:Boolean);
    { Public declarations }
  end;

var
  Frm_Ad_Enter_AssetCardUseDept: TFrm_Ad_Enter_AssetCardUseDept;
implementation

uses Sys_Global, Ad_Enter_AssetCardUseDept_D;

{$R *.DFM}
{ TFrm_Ad_Enter_AssetCardUseDept }

procedure TFrm_Ad_Enter_AssetCardUseDept.init(Sender:TObject;AdOConnection:TAdOConnection;HeadText: Array of String;isQuery:Boolean);
var
  i:Integer;
begin
  SetDBConnect(AdOConnection);
  AdoQry_Body.Connection:=AdOConnection;
  AdoQry_Tmp.Connection:=AdOConnection;
  Edt_AssetCode.Text:=HeadText[0];
  EDT_AssetName.Text:=HeadText[1];
  MEDT_InAccountDate.Text:=HeadText[2];
  MEDT_StartUseDate.Text:=HeadText[3];
  CMBX_DepreciationWay.ItemIndex:=StrToInt(HeadText[4]);
  EDT_FirstFAmount.Text:=HeadText[5];
  EDT_IntendingPeriod.Text:=HeadText[6];
  EDT_DepositaryCode.Text:=HeadText[7];
  EDT_DepositaryName.Text:=HeadText[8];
  EDT_AdChangeTypeCode.Text:=HeadText[9];
  EDT_AdChangeTypeName.Text:=HeadText[10];
  EDT_UseStatusCode.Text:=HeadText[11];
  EDT_UseStatusName.Text:=HeadText[12];
  With AdoQry_Body Do
  begin
    Close;
    Sql.clear;
    Sql.Text:='select top 0 Ad_UseDept.AssetCode,Ad_UseDept.DeptCode,Dept.DeptName,'
              +' Ad_useDept.kmCode,Gl_AccountSubject.kmName,Ad_UseDept.AssignRate,Ad_UseDept.RemArk '+
              'from Ad_UseDept Left Join Dept On Ad_UseDept.DeptCode=Dept.DeptCode '+
              '  left join Gl_AccountSubject on Ad_useDept.kmCode=Gl_AccountSubject.kmCode '+
              'where Ad_UseDept.AssetCode='''+Edt_AssetCode.Text+''' ';
    Open;
  end;
  AssetCard_D:=TFrm_Ad_Enter_AssetCard_D(Sender);
  If AssetCard_D.DeptInfo.RecordCount>0 Then
  begin
    For i:=0 to AdoQry_Body.RecordCount-1 do AdoQry_Body.Delete;
    with AdoQry_Body do
    begin
      For i:=0 to AssetCard_D.DeptInfo.RecordCount-1 do
      begin
        AdoQry_Body.Append;
        fieldbyname('AssetCode').AsString:=AssetCard_D.DeptInfo.AssetCode[i];
        fieldbyname('DeptCode').AsString:=AssetCard_D.DeptInfo.DeptCode[i];
        fieldbyname('DeptName').AsString:=AssetCard_D.DeptInfo.DeptName[i];
        fieldbyname('kmCode').AsString:=AssetCard_D.DeptInfo.kmCode[i];
        fieldbyname('kmName').AsString:=AssetCard_D.DeptInfo.kmName[i];
        fieldbyname('AssignRate').AsString:=AssetCard_D.DeptInfo.AssignRate[i];
        fieldbyname('RemArk').AsString:=AssetCard_D.DeptInfo.RemArk[i];
        Post;
      end;
    end;
  end;
  Frm_Entry_Detail:=TFrm_Ad_Enter_AssetCardUseDept_D.Create(Application);
  If isQuery Then
  begin
    TlBtn_InsertLine.Visible:=False;
    TlBtn_Modify.Visible:=False;
    TlBtn_DeleteLine.Visible:=False;
    TlBtn_InsertLine.Enabled:=False;
    TlBtn_Modify.Enabled:=False;
    TlBtn_DeleteLine.Enabled:=False;
    ToolButton2.Enabled:=False;
    ToolButton2.Visible:=False;
    DBGridEh.OnDblClick:=nil;
  end;
end;

procedure TFrm_Ad_Enter_AssetCardUseDept.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if(Act_Save.Enabled)then
  begin
    if(DispInfo('数据有改动,需要保存吗?',2)='y')then
    begin
      SaveBodyInfo;
      Self.ModalResult:=mrOk;
    end
    else
    begin
      if(AdoQry_Body.State in [dsInsert,dsEdit])then
        AdoQry_Body.Cancel;
    end;
  end
  else
  begin
    Self.ModalResult:=mrOk;
  end;
end;

procedure TFrm_Ad_Enter_AssetCardUseDept.SaveBodyInfo;
var
  i:Integer;
  Rate:Real;
begin
  i:=0;
  IF AssetCard_D.DeptInfo.RecordCount>0 Then
  begin
  {
    For i:=0 to AssetCard_D.DeptInfo.RecordCount-1 do
    begin
      AssetCard_D.DeptInfo.AssetCode[i]:='';
      AssetCard_D.DeptInfo.DeptCode[i]:='';
      AssetCard_D.DeptInfo.DeptName[i]:='';
      AssetCard_D.DeptInfo.AssignRate[i]:='0';
      AssetCard_D.DeptInfo.RemArk[i]:='';
    end;}
    AssetCard_D.DeptInfo.RecordCount:=0;
//    i:=0;
  end;
  with AdoQry_Body do
  begin
    First;
    while not Eof do
    begin
      AssetCard_D.DeptInfo.AssetCode[i]:=Edt_AssetCode.Text;
      AssetCard_D.DeptInfo.DeptCode[i]:=fieldbyname('DeptCode').AsString;
      AssetCard_D.DeptInfo.DeptName[i]:=fieldbyname('DeptName').AsString;
      AssetCard_D.DeptInfo.kmCode[i]:=fieldbyname('kmCode').AsString;
      AssetCard_D.DeptInfo.kmName[i]:=fieldbyname('kmName').AsString;
      
      AssetCard_D.DeptInfo.AssignRate[i]:=fieldbyname('AssignRate').AsString;
      AssetCard_D.DeptInfo.RemArk[i]:=fieldbyname('RemArk').AsString;
      Rate:=Rate+fieldbyname('AssignRate').AsFloat;
      Next;
      i:=i+1;
    end;
    If Rate<>100 Then
    begin
      DispInfo('分配率不等于100%,不能保存!',3);
      Abort;
    end;
    AssetCard_D.DeptInfo.RecordCount:=i;
  end;
end;

procedure TFrm_Ad_Enter_AssetCardUseDept.Act_SaveExecute(Sender: TObject);
begin
  SaveBodyInfo;
  DispInfo('数据保存成功',3);
  Act_Save.Enabled:=False;
  Self.ModalResult:=mrOk;
end;

end.

⌨️ 快捷键说明

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