论文部分内容阅读
[摘 要] 本文以VF(Visual Foxpro)为数据库管理系统,分析与探讨了资产负债表的设计与实现的基本原理,并提供了相应的程序代码。
[关键词] 内置公式设计;函数与程序设计;资产负债表;数据处理
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010 . 04 . 003
[中图分类号]F232 [文献标识码]A [文章编号]1673 - 0194(2010)04 - 0008 - 04
资产负债表(Balance Sheet)是表示企业在一定日期(通常为各会计期末)财务状况(即资产、负债和业主权益的状况)的主要会计报表。资产负债表利用会计平衡原则,将合乎会计原则的资产、负债、股东权益等科目分为“资产”和“负债及股东权益”两大区块,在经过分录、转账、试算、调整等会计程序后,以特定日期的静态企业情况为基准,浓缩成一张报表。本文以VF(Visual Foxpro)为数据库系统,分析和说明了资产负债表的编制方法和实现过程。文中所用程序代码已通过上机验证。
一、数据表结构与内置公式设计
1. zz.dbf(总账)的结构为:
n(c,4);y(c,2);kmbm(c,4);kmmc(c,12);qcj(n,12,2);qcd(n,12,2); bqj(n,12,2);bqd(n,12,2); qmj(n,12,2);qmd(n,12,2)。
各字段分别对应年、月、科目编码、科目名称、期初借、期初贷、本期借、本期贷、期末借、期末贷。
2. zcfzb.dbf(资产负债表)的结构为:
zc(c,22);hc(c,4);ncsgs(c,50);ncs(n,12,2);qmsgs(c,50);qms(n,12,2); qy(c,22);hc1(c,4);ncsgs1(c,50);ncs1(n,12,2);qmsgs1(c,50);qms1(n,12,2)。
各字段分别对应资产、行次、年初数公式、年初数、期末数公式、期末数、权益、权益行次、权益年初数公式、权益年初数、权益期末数公式、权益期末数。
3. 资产负债表内置公式见表1。它是数据处理程序能够自动实现数据计算的基础,需要事先设计好并放入ZCFZB.DBF 中。要注意,公式中所使用的科目代码一定要与最新企业会计准则中的科目编号一致,并且 ZZ.DBF 科目中代码一定也要与最新企业会计准则中的科目编号一致。
二、函数设计
为了方便地实现数据自动计算,需要先编制3个函数,分别用于计算会计科目的期初余额、期末余额以及资产负债表表内求和。
*qc( ) 计算会计科目期初余额函数
para kmdm,n
sele 1
use zz
loca all for kmbm=kmdm
if qcj-qcd>=0
da=qcj-qcd
else
da=qcd-qcj
endif
use
retuda
*qm( ) 计算会计科目期末余额函数
para kmdm
sele 1
use zz
loca all for kmbm=kmdm
if qmj-qmd>=0
da=qmj-qmd
else
da=qmd-qmj
endif
use
retuda
* msum( ) 资产负债表表内求和函数
para s
sele 2
t1=val(subs(s,1,2))
t2=subs(s,3,1)
t3=val(subs(s,4,2))
if t2=’_’
if p=1
sum ncsto n11 for recn()>=t1 .and. recn()<=t3
endi
if p=2
sum qmsto n11 for recn()>=t1 .and. recn()<=t3
endi
if p=3
sum ncs1to n11 for recn()>=t1 .and. recn()<=t3
endi
if p=4
sum qms1to n11 for recn()>=t1 .and. recn()<=t3
endi
endi
if t2=’ ’
if p=1
sum ncsto n11 for recn()=t1 .or. recn()=t3
endi
if p=2
sum qmsto n11 for recn()=t1 .or. recn()=t3
endi
if p=3
sum ncs1to n11 for recn()=t1 .or. recn()=t3
endi
if p=4
sum qms1to n11 for recn()=t1 .or. recn()=t3
endi
endi
go t3 1
retu n11
三、数据处理之程序设计与实现
当前面函数和内置公式设计并调试完毕后,便可以设计并运行通过下面的数据计算程序。该程序可以根据公式自动计算出资产负债表内各项目的数值。
*js.prg 报表数据计算程序
clea
clea all
set talk off
sele 2
use zcfzb
go 1
do while .not. eof()
a1=allt(ncsgs)
iflen(a1)#0
if len(a1)=13
p=1
endi
r1=
[关键词] 内置公式设计;函数与程序设计;资产负债表;数据处理
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010 . 04 . 003
[中图分类号]F232 [文献标识码]A [文章编号]1673 - 0194(2010)04 - 0008 - 04
资产负债表(Balance Sheet)是表示企业在一定日期(通常为各会计期末)财务状况(即资产、负债和业主权益的状况)的主要会计报表。资产负债表利用会计平衡原则,将合乎会计原则的资产、负债、股东权益等科目分为“资产”和“负债及股东权益”两大区块,在经过分录、转账、试算、调整等会计程序后,以特定日期的静态企业情况为基准,浓缩成一张报表。本文以VF(Visual Foxpro)为数据库系统,分析和说明了资产负债表的编制方法和实现过程。文中所用程序代码已通过上机验证。
一、数据表结构与内置公式设计
1. zz.dbf(总账)的结构为:
n(c,4);y(c,2);kmbm(c,4);kmmc(c,12);qcj(n,12,2);qcd(n,12,2); bqj(n,12,2);bqd(n,12,2); qmj(n,12,2);qmd(n,12,2)。
各字段分别对应年、月、科目编码、科目名称、期初借、期初贷、本期借、本期贷、期末借、期末贷。
2. zcfzb.dbf(资产负债表)的结构为:
zc(c,22);hc(c,4);ncsgs(c,50);ncs(n,12,2);qmsgs(c,50);qms(n,12,2); qy(c,22);hc1(c,4);ncsgs1(c,50);ncs1(n,12,2);qmsgs1(c,50);qms1(n,12,2)。
各字段分别对应资产、行次、年初数公式、年初数、期末数公式、期末数、权益、权益行次、权益年初数公式、权益年初数、权益期末数公式、权益期末数。
3. 资产负债表内置公式见表1。它是数据处理程序能够自动实现数据计算的基础,需要事先设计好并放入ZCFZB.DBF 中。要注意,公式中所使用的科目代码一定要与最新企业会计准则中的科目编号一致,并且 ZZ.DBF 科目中代码一定也要与最新企业会计准则中的科目编号一致。
二、函数设计
为了方便地实现数据自动计算,需要先编制3个函数,分别用于计算会计科目的期初余额、期末余额以及资产负债表表内求和。
*qc( ) 计算会计科目期初余额函数
para kmdm,n
sele 1
use zz
loca all for kmbm=kmdm
if qcj-qcd>=0
da=qcj-qcd
else
da=qcd-qcj
endif
use
retuda
*qm( ) 计算会计科目期末余额函数
para kmdm
sele 1
use zz
loca all for kmbm=kmdm
if qmj-qmd>=0
da=qmj-qmd
else
da=qmd-qmj
endif
use
retuda
* msum( ) 资产负债表表内求和函数
para s
sele 2
t1=val(subs(s,1,2))
t2=subs(s,3,1)
t3=val(subs(s,4,2))
if t2=’_’
if p=1
sum ncsto n11 for recn()>=t1 .and. recn()<=t3
endi
if p=2
sum qmsto n11 for recn()>=t1 .and. recn()<=t3
endi
if p=3
sum ncs1to n11 for recn()>=t1 .and. recn()<=t3
endi
if p=4
sum qms1to n11 for recn()>=t1 .and. recn()<=t3
endi
endi
if t2=’ ’
if p=1
sum ncsto n11 for recn()=t1 .or. recn()=t3
endi
if p=2
sum qmsto n11 for recn()=t1 .or. recn()=t3
endi
if p=3
sum ncs1to n11 for recn()=t1 .or. recn()=t3
endi
if p=4
sum qms1to n11 for recn()=t1 .or. recn()=t3
endi
endi
go t3 1
retu n11
三、数据处理之程序设计与实现
当前面函数和内置公式设计并调试完毕后,便可以设计并运行通过下面的数据计算程序。该程序可以根据公式自动计算出资产负债表内各项目的数值。
*js.prg 报表数据计算程序
clea
clea all
set talk off
sele 2
use zcfzb
go 1
do while .not. eof()
a1=allt(ncsgs)
iflen(a1)#0
if len(a1)=13
p=1
endi
r1=