📄 datapas.~pas
字号:
WideStringField16: TWideStringField;
WideStringField19: TWideStringField;
StringField36: TStringField;
StringField37: TStringField;
StringField38: TStringField;
StringField39: TStringField;
StringField40: TStringField;
DateTimeField7: TDateTimeField;
DateTimeField8: TDateTimeField;
WideStringField20: TWideStringField;
WideStringField21: TWideStringField;
IntegerField1: TIntegerField;
StringField41: TStringField;
zcxxbmb: TADOTable;
SmallintField50: TSmallintField;
SmallintField51: TSmallintField;
SmallintField52: TSmallintField;
SmallintField53: TSmallintField;
SmallintField54: TSmallintField;
WideStringField22: TWideStringField;
WideStringField23: TWideStringField;
SmallintField55: TSmallintField;
DateTimeField9: TDateTimeField;
BCDField2: TBCDField;
SmallintField56: TSmallintField;
WideStringField24: TWideStringField;
SmallintField57: TSmallintField;
BooleanField4: TBooleanField;
BooleanField5: TBooleanField;
WideStringField25: TWideStringField;
MemoField1: TMemoField;
DateTimeField10: TDateTimeField;
BooleanField6: TBooleanField;
zcxxbmbzclb: TStringField;
zcxxbmbzcmc: TStringField;
zcxxbmbzcxh: TStringField;
zcxxbmbzcyt: TStringField;
zcxxbmbgys: TStringField;
zcxxbmbsyz: TStringField;
maxzybm: TADOQuery;
zcfltj: TADOQuery;
SmallintField58: TSmallintField;
SmallintField59: TSmallintField;
SmallintField60: TSmallintField;
SmallintField61: TSmallintField;
SmallintField62: TSmallintField;
SmallintField63: TSmallintField;
DateTimeField11: TDateTimeField;
SmallintField64: TSmallintField;
WideStringField26: TWideStringField;
BooleanField7: TBooleanField;
WideStringField27: TWideStringField;
WideStringField28: TWideStringField;
StringField42: TStringField;
StringField43: TStringField;
StringField44: TStringField;
StringField45: TStringField;
StringField46: TStringField;
StringField47: TStringField;
BCDField3: TBCDField;
SmallintField65: TSmallintField;
CurrencyField1: TCurrencyField;
CurrencyField2: TCurrencyField;
procedure gdzcmcbBeforePost(DataSet: TDataSet);
procedure zcwxcxDSDesignerGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure gdzccxDSDesigner2GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure zcbfcxDSDesigner2GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure zccjcxDSDesignerGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure gdzccxCalcFields(DataSet: TDataSet);
procedure zcfltjCalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
filepath:string;
{ Public declarations }
end;
var
hjzcdata: Thjzcdata;
implementation
{$R *.dfm}
function rqc(sourdate:tdatetime;detidate:tdatetime):integer;
var year,month,day:word;
total1,total2:integer;
begin
DecodeDate(sourdate, Year, Month, Day);
//要求固定资产购买日期必须为1800年之后
total1:=(year-1800)*365+month*30+day;
DecodeDate(detidate, Year, Month, Day);
total2:=(year-1800)*365+month*30+day;
result:=abs(total1-total2);
end;
procedure Thjzcdata.gdzcmcbBeforePost(DataSet: TDataSet);
begin
if gdzcmcb.fields[0].value=0 then
gdzcmcb.delete;
end;
procedure Thjzcdata.zcwxcxDSDesignerGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if not zcwxcx.IsEmpty then
begin
if sender.Value=true then
text:='是' else
if sender.Value=false then
text:='否';
end;
end;
procedure Thjzcdata.gdzccxDSDesigner2GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
var year,month:integer;
begin
if not gdzccx.IsEmpty then
begin
year:=sender.Value div 12;
month:=sender.Value mod 12;
if month<>0 then
text:=inttostr(year)+'年零'+inttostr(month)+'月' else
text:=inttostr(year)+'年';
end;
end;
procedure Thjzcdata.zcbfcxDSDesigner2GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
var year,month:integer;
begin
year:=sender.Value div 12;
month:=sender.Value mod 12;
if month<>0 then
text:=inttostr(year)+'年零'+inttostr(month)+'月' else
text:=inttostr(year)+'年';
end;
procedure Thjzcdata.zccjcxDSDesignerGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if sender.value=true then
text:='是' else
text:='否';
end;
procedure Thjzcdata.gdzccxCalcFields(DataSet: TDataSet);
var zclbbm,sylx,yylx,i:integer; //资产类别编码,使用年限,已用年限
zjzh,yjjczl,yzjl,zjz,jz,ljzj:currency; //折旧总和,预计净残值率,月折旧率,购买价格,净值,累积折旧
zjfs:boolean;
gmrq:tdatetime;
begin
zclbbm:=gdzccx.fieldbyname('资产类别编码').asinteger;
//查询预计净残值率和月折旧率
with jczlcx do
begin
close;
parameters.ParamByName('zclbbm').Value:=zclbbm;
prepared;
open;
yjjczl:=fieldbyname('预计净残值率').AsCurrency;
yzjl:=fieldbyname('月折旧率').AsCurrency;
end;
//查询折旧方式
with lscx do
begin
close;
sql.clear;
sql.add('select 折旧方式 from 参数表');
prepared;
open;
zjfs:=fields[0].AsBoolean;
end;
sylx:=gdzccx.fieldbyname('使用年限').asinteger;
gmrq:=gdzccx.fieldbyname('购买日期').AsDateTime;
zjz:=gdzccx.fieldbyname('购买价格').AsCurrency;
yylx:=(rqc(now,gmrq)+15) div 30; //求得已用年限
if zjfs then //采用平均年限法
begin
zjzh:=zjz*(1-yjjczl); //折旧总和=总价值*(1-预计净残值率)
ljzj:=zjzh*(yylx/sylx); //累积折旧=折旧总和*(已使用年限/使用年限)
if ljzj<=zjzh then
begin
gdzccx.fieldbyname('累积折旧').AsCurrency:=ljzj;
gdzccx.fieldbyname('净值').AsCurrency:=zjz-ljzj;
end else
//如果累积折旧大于应该折旧总和,则累积折旧为应折旧总和
begin
gdzccx.fieldbyname('累积折旧').AsCurrency:=zjzh;
gdzccx.fieldbyname('净值').AsCurrency:=zjz-zjzh;
end;
end else
begin //采用复式月折旧率法
jz:=zjz;
if yylx>0 then
for i:=1 to yylx do //求得净值
jz:=jz*(1-yzjl);
gdzccx.fieldbyname('累积折旧').AsCurrency:=zjz-jz;
gdzccx.fieldbyname('净值').AsCurrency:=jz;
end;
end;
procedure Thjzcdata.zcfltjCalcFields(DataSet: TDataSet);
var
zclbbm,sylx,yylx,i:integer; //资产类别编码,使用年限,已用年限
zjzh,yjjczl,yzjl,zjz,jz,ljzj:currency; //折旧总和,预计净残值率,月折旧率,购买价格,净值,累积折旧
zjfs:boolean;
gmrq:tdatetime;
begin
zclbbm:=gdzccx.fieldbyname('资产类别编码').asinteger;
//查询预计净残值率和月折旧率
with jczlcx do
begin
close;
parameters.ParamByName('zclbbm').Value:=zclbbm;
prepared;
open;
yjjczl:=fieldbyname('预计净残值率').AsCurrency;
yzjl:=fieldbyname('月折旧率').AsCurrency;
end;
//查询折旧方式
with lscx do
begin
close;
sql.clear;
sql.add('select 折旧方式 from 参数表');
prepared;
open;
zjfs:=fields[0].AsBoolean;
end;
sylx:=gdzccx.fieldbyname('使用年限').asinteger;
gmrq:=gdzccx.fieldbyname('购买日期').AsDateTime;
zjz:=gdzccx.fieldbyname('购买价格').AsCurrency;
yylx:=(rqc(now,gmrq)+15) div 30; //求得已用年限
if zjfs then //采用平均年限法
begin
zjzh:=zjz*(1-yjjczl); //折旧总和=总价值*(1-预计净残值率)
ljzj:=zjzh*(yylx/sylx); //累积折旧=折旧总和*(已使用年限/使用年限)
if ljzj<=zjzh then
begin
gdzccx.fieldbyname('累积折旧').AsCurrency:=ljzj;
gdzccx.fieldbyname('净值').AsCurrency:=zjz-ljzj;
end else
//如果累积折旧大于应该折旧总和,则累积折旧为应折旧总和
begin
gdzccx.fieldbyname('累积折旧').AsCurrency:=zjzh;
gdzccx.fieldbyname('净值').AsCurrency:=zjz-zjzh;
end;
end else
begin //采用复式月折旧率法
jz:=zjz;
if yylx>0 then
for i:=1 to yylx do //求得净值
jz:=jz*(1-yzjl);
gdzccx.fieldbyname('累积折旧').AsCurrency:=zjz-jz;
gdzccx.fieldbyname('净值').AsCurrency:=jz;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -