對(duì)會(huì)計(jì)軟件中憑證輸入模塊的一點(diǎn)看法
2024-07-21 02:08:02
供稿:網(wǎng)友
對(duì)會(huì)計(jì)軟件中憑證輸入模塊的一點(diǎn)看法
武漢華中師大信管系 謝剛
摘要:
憑證的制作和處理是會(huì)計(jì)工作中最為重要的一環(huán),特別是對(duì)會(huì)計(jì)電算化來(lái)說(shuō),就顯得更重要了,應(yīng)用軟件來(lái)實(shí)現(xiàn)傳統(tǒng)的會(huì)計(jì)過(guò)程,憑證是其他一切處理的基礎(chǔ)。沒(méi)有了憑證就沒(méi)有會(huì)計(jì)軟件后面的一切。而就憑證這塊來(lái)說(shuō),最為基礎(chǔ)也最為重要的當(dāng)屬憑證的輸入。而憑證的輸入的第一步就是確定此憑證的憑證編號(hào),在會(huì)計(jì)軟件中應(yīng)該盡量的避免由人工來(lái)獲取憑證編號(hào),可實(shí)施的軟件都應(yīng)該由程序來(lái)自動(dòng)獲得憑證編號(hào),因?yàn)榍懊嬲f(shuō)過(guò),憑證編號(hào)不容錯(cuò)誤。本文就憑證編號(hào)的獲取過(guò)程進(jìn)行以下討論。使用開(kāi)發(fā)工具:powerbuilder8.0 + ms sql-server2000
關(guān)鍵字:
會(huì)計(jì)軟件 憑證輸入 憑證編號(hào) powerbuilder8.0 sql-server2000
正文:
一.傳統(tǒng)方法的探討:
通過(guò)對(duì)目前國(guó)內(nèi)會(huì)計(jì)軟件中憑證輸入模塊的調(diào)查分析,發(fā)現(xiàn)大部分軟件的憑證輸入模塊在憑證編號(hào)獲取上面使用的方法基本一致。使用方法如下:
在一張新的憑證輸入之前,必須先確定這張憑證的憑證編號(hào)。一般做法為:由程序檢查ppk(日庫(kù))記錄。如果發(fā)現(xiàn)里面有記錄,就取其最后一記錄的憑證編號(hào),再加上1就為正準(zhǔn)備輸入的這張憑證的編號(hào);如果ppk庫(kù)里面沒(méi)有記錄(說(shuō)明正準(zhǔn)備輸入的這張憑證為本工作日的第一張憑證),就必須得訪問(wèn)pok&rq(當(dāng)月月庫(kù))記錄,如果發(fā)現(xiàn)里面有記錄,同理取其最后一記錄的憑證編號(hào),再加上1就為正準(zhǔn)備輸入的這張憑證的憑證編號(hào);如果pok庫(kù)里面沒(méi)有記錄,就說(shuō)明此天為月初的第一個(gè)工作日(但是這種情況一年一共就僅12次)。
二.親自設(shè)計(jì)過(guò)程中的經(jīng)驗(yàn):
我在親自設(shè)計(jì)憑證輸入程序的時(shí)候(用powerbuilder + ms sql-server2000設(shè)計(jì)),發(fā)現(xiàn)上述方法用語(yǔ)言實(shí)現(xiàn)起來(lái)具有以下不足:
第一:是在代碼設(shè)計(jì)和維護(hù)的時(shí)候不方便,
第二:更為重要的是在憑證編號(hào)的連續(xù)性方便不好,比如:從工資模塊轉(zhuǎn)過(guò)來(lái)的工資憑證就不得不用一個(gè)新的憑證機(jī)制來(lái)存放這些憑證,
第三:還有就是浪費(fèi)了很多系統(tǒng)資源,比如每次添加憑證的時(shí)候都要移動(dòng)大量的數(shù)據(jù)庫(kù)記錄,特別是在月初的第一個(gè)工作日,在月末也面臨同樣的問(wèn)題(月到月末,表中的記錄月多,移動(dòng)的次數(shù)就月多)。
所以,我在實(shí)際設(shè)計(jì)的過(guò)程中,摸索出了一種新的思路來(lái)解決這個(gè)問(wèn)題,可以很好解決上述三個(gè)問(wèn)題,覺(jué)得這個(gè)思路有必要拿出來(lái)和大家共同商討,具體實(shí)現(xiàn)思路如下:
第一:另外新建一個(gè)數(shù)據(jù)表(表名為hqpzbh):
字段名稱分別為:id,pzbh,字段屬性分別為:integer,char型。建立好后進(jìn)行附一組值(最好用程序來(lái)附值)。id字段附值為1,pzbh字段為0000(根據(jù)具體的要求進(jìn)行選擇位數(shù),如000000等)。
用程序?qū)崿F(xiàn)代碼如下(僅為參考,根據(jù)具體的編程語(yǔ)言變換形式):
(連接數(shù)據(jù)庫(kù)語(yǔ)句省略,以下同)
insert into hqpzbh(hqpzbh.id,hqpzbh.pzbh)
values(1,0000) ;
第二:每次在輸入新的憑證之前獲取該憑證編號(hào)的思路:
數(shù)據(jù)表hqpzbh里面始終只有一條記錄,id始終為1,pzbh是始終為庫(kù)里面的最后一張憑證的編號(hào)。每次進(jìn)行輸入憑證獲取憑證編號(hào)的時(shí)候就訪問(wèn)此數(shù)據(jù)表,讀取表中pzbh字段的值,再加1就ok了。
用程序?qū)崿F(xiàn)的代碼如下(參考):
integer nowpzbh;(定義存儲(chǔ)準(zhǔn)備輸入的這張憑證的憑證編號(hào)的變量)
//在表hqpzbh中獲取pzbh字段的值,并放于nowpzbh變量中
select hqpzbh.pzbh
into :nowpzbh
from hqpzbh
where hqpzbh.id=1;
//注意:本表中始終只有一條記錄
nowpzbh = nowpzbh+1
//此值自加1后就成為了即將輸入的憑證的憑證編號(hào)了
第三:保證數(shù)據(jù)表hqpzbh里面的pzbh字段的值始終是最后一張憑證的編號(hào)。
那么就要求我們?cè)诿繌垜{證輸入完畢并經(jīng)過(guò)檢驗(yàn)保存的同時(shí),用此憑證編號(hào)來(lái)替代數(shù)據(jù)表hqpzbh里面的原有的pzbh字段的值。
用程序?qū)崿F(xiàn)的代碼如下(參考):
假設(shè)存儲(chǔ)剛保存的那張憑證的憑證編號(hào)的變量為nowpzbh
update hqpzbh
set hqpzbh.pzbh=:nowpzbh
where hqpzbh.id=1;
//表中只有一條記錄。并且其id字段的值始終都為1
三、總結(jié)
我認(rèn)為這個(gè)方法比較好理解和實(shí)現(xiàn),設(shè)計(jì)和維護(hù)代碼也比較方便。同時(shí)對(duì)于那些特殊憑證的處理也極為方便,比如:工資憑證的自動(dòng)轉(zhuǎn)入憑證庫(kù)時(shí)就不必要再使用傳統(tǒng)軟件的那種“特定區(qū)段的憑證編號(hào)”方式了。就可以實(shí)現(xiàn)憑證庫(kù)中憑證編號(hào)的真正意義上的連續(xù)了。還有就是對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)量相當(dāng)大時(shí),這種方式相當(dāng)占優(yōu)勢(shì),因?yàn)樗枯斎胍粡垜{證只需要訪問(wèn)二次數(shù)據(jù)庫(kù)的數(shù)據(jù)表,更為重要的是這個(gè)數(shù)據(jù)表只有一條數(shù)據(jù),訪問(wèn)時(shí)不需要任何的移動(dòng)時(shí)間。避免了傳統(tǒng)方式的憑證編號(hào)的尋找(特別是月初的第一個(gè)工作日和月尾的數(shù)據(jù)大量移動(dòng))。大大節(jié)約了訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)間開(kāi)銷和空間開(kāi)銷。