[摘 要] 本文以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=a1
sele 2
repl ncs with r1
endi
a2=allt(qmsgs)
if len(a2)#0
if len(a2)=13
p=2
endi
r2=a2
sele 2
repl qms with r2
endi
a3=allt(ncs1gs)
if len(a3)#0
if len(a3)=13
p=3
endi
r3=a3
sele 2
repl ncs1 with r3
endi
a4=allt(qms1gs)
if len(a4)#0
if len(a4)=13
p=4
endi
r4=a4
sele 2
repl qms1 with r4
endi
skip
endd
close all
clea all
set talk on
retu
主要參考文獻
[1] 財政部. 企業會計準則第30號——財務報表列報[S]. 2006.