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