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

📄 ar_enter_accountaging_d.pas

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

Interface

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

Type
  TFrm_Ar_Enter_AccountAging_D = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edt_OrdinalNo: TEdit;
    Edt_Days: TEdit;
    Edt_AgingDESCription: TEdit;
    procedure btn_okClick(Sender: TObject);
    procedure Edt_DaysExit(Sender: TObject);
    procedure Edt_DaysEnter(Sender: TObject);
  private
    Days,OrdinalNo:String;

    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SaveData; Override;  
    { Public declarations }
  end;

var
  Frm_Ar_Enter_AccountAging_D: TFrm_Ar_Enter_AccountAging_D;

implementation

uses Sys_Global;

{$R *.DFM}

{ TFrm_Ar_Enter_AccountAging_D }

procedure TFrm_Ar_Enter_AccountAging_D.InitControls;
begin
  inherited;
  with AdoQry_Maintain do
  begin
    OrdinalNo:=fieldbyname('OrdinalNo').AsString;
    Edt_OrdinalNo.Text :=fieldbyname('OrdinalNo').AsString;
    Edt_Days.Text :=fieldbyname('Days').AsString;
    Edt_AgingDESCription.Text:=fieldbyname('AgingDESCription').AsString;
  end;
  If (status='Add')  Then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text :='Select Count(*) As OrdinalNumber From Ar_AccountAging';
    AdoQry_Tmp.Open;
    Edt_OrdinalNo.Text :=IntToStr(AdoQry_Tmp.fieldbyname('OrdinalNumber').AsInteger+1);
    Edt_AgingDESCription.Text :='';
  end;
  if Edt_Days.CanFocus then
    Edt_Days.SetFocus ;
end;

procedure TFrm_Ar_Enter_AccountAging_D.SaveData;
begin
  inherited;
  if (Add) then
  begin
    try
      DbConnect.beginTrans ;
      with AdoQry_Tmp do
      begin
        Close;
        SQL.clear;
        SQL.Text:= ' Insert into Ar_AccountAging '
                  +' (OrdinalNo,Days,AgingDESCription ) '
                  +' Values('
                  +''''+edt_OrdinalNo.text+''''
                  +','''+edt_Days.text+''''
                  +','''+Edt_AgingDESCription.text+''''
                  +')';
        ExecSQL;

        Close;
        SQL.clear;
        SQL.Text:= ' Insert into Ar_AccountAgingHistory '
                  +' (OrdinalNo,Days,AgingDESCription ) '
                  +' Values('
                  +''''+edt_OrdinalNo.text+''''
                  +','''+edt_Days.text+''''
                  +','''+Edt_AgingDESCription.text+''''
                  +')';
         ExecSQL;
      end;
      DBConnect.CommitTrans;
    except
      DbConnect.RollBackTrans ;
      Abort;
    end;
  end
  else
  begin
    Try
      DbConnect.beginTrans ;
      with AdoQry_Tmp do
      begin
        Close;
        SQL.clear;
        sql.Add('update Ar_AccountAging set '+
                                'OrdinalNo='''+Edt_OrdinalNo.text+''','+
                                'Days='''+Edt_Days.text+''','+
                                'AgingDESCription='''+Edt_AgingDESCription.text+''' '+
                      ' where OrdinalNo='''+OrdinalNo+''' ');

        ExecSQL;

        Close;
        SQL.clear;
        SQL.Text:= ' Insert into Ar_AccountAgingHistory '
                  +' (OrdinalNo,Days,AgingDESCription ) '
                  +' Values('
                  +''''+edt_OrdinalNo.text+''''
                  +','''+edt_Days.text+''''
                  +','''+Edt_AgingDESCription.text+''''
                  +')';
         ExecSQL;
      end;
      DbConnect.CommitTrans ;
    Except
      DbConnect.RollBackTrans;
      Abort;
    end;
  end;
  //给AdoQry_Item各字段赋值

  with AdoQry_Maintain do
  begin
    edit;
    fieldbyname('OrdinalNo').AsString:=Edt_OrdinalNo.Text ;
    fieldbyname('Days').AsString:=Edt_Days.Text;
    fieldbyname('AgingDESCription').AsString:=Edt_AgingDESCription.Text;
    Post;
  end;

end;

procedure TFrm_Ar_Enter_AccountAging_D.btn_okClick(Sender: TObject);
var
  BeforeDays,endDays:Integer;
  SqlText:String;
begin
  If (status='Add')  Then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text :='Select isNull(Max(Days),0) As MaxDays From Ar_AccountAging';
    AdoQry_Tmp.Open;
    if StrToInt(Edt_Days.Text)<= AdoQry_Tmp.fieldbyname('MAxDays').AsInteger then
    begin
      DispInfo('该记录的天数应大于'+AdoQry_Tmp.fieldbyname('MAxDays').AsString+'天!',1);
      Edt_Days.SetFocus;
      Abort;
    end;
  end
  else
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    SQlText:='Select isNull(Max(Days),0) As BeforeDays From Ar_AccountAging where OrdinalNo < '''+Edt_OrdinalNo.Text+'''';
    AdoQry_Tmp.SQL.Text := SqlText;
    AdoQry_Tmp.Open;
    BeforeDays:= AdoQry_Tmp.fieldbyname('BeforeDays').AsInteger;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    SqlText:='Select isNull(min(Days),0) As endDays From Ar_AccountAging where OrdinalNo>'''+Edt_OrdinalNo.Text+'''';
    AdoQry_Tmp.SQL.Text :=SQlText;
    AdoQry_Tmp.Open;
    endDays:= AdoQry_Tmp.fieldbyname('endDays').AsInteger;
    if endDays<>0 then
    begin
      if Not((StrToInt(Edt_Days.Text)>BeforeDays) And (StrToInt(Edt_Days.Text)<endDays)) then
      begin
        DispInfo('该记录的天数应大于'+IntToStr(BeforeDays)+'天小于'+IntToStr(endDays)+'天!',1);
        Edt_Days.SetFocus;
        Abort;
      end;
    end
    else
    begin
      if StrToInt(Edt_Days.Text)<= BeforeDays then
      begin
        DispInfo('该记录的天数应大于'+IntToStr(BeforeDays)+'天!',1);
        Edt_Days.SetFocus;
        Abort;
      end;
    end;
  end;
  inherited;

end;

procedure TFrm_Ar_Enter_AccountAging_D.Edt_DaysExit(Sender: TObject);
var
  SqlText:String;
begin
  inherited;
  try
    Edt_Days.Text := InttoStr(StrtoInt(Edt_Days.Text));
  except
    DispInfo('天数格式输入错误,应为整数!',1);
    Edt_Days.SetFocus;
    Abort;
  end;
  if (Edt_Days.Text <> Days) And (Edt_Days.Modified) then
  begin
    SQlText:='Select isNull(Max(Days),0) As BeforeDays From Ar_AccountAging where OrdinalNo < '''+Edt_OrdinalNo.Text+'''';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.text := SqlText;
    AdoQry_Tmp.Open;
    Edt_AgingDESCription.Text :=IntToStr(AdoQry_Tmp.fieldbyname('BeforeDays').Asinteger+1)+'-'+Edt_Days.Text ;
    Days:= Edt_Days.Text;
  end;
end;

procedure TFrm_Ar_Enter_AccountAging_D.Edt_DaysEnter(Sender: TObject);
begin
  inherited;
  Days:=Edt_Days.Text;
end;

end.

⌨️ 快捷键说明

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