最近我們?cè)趯?duì)某單位進(jìn)行財(cái)務(wù)收支審計(jì)獲取數(shù)據(jù)時(shí),發(fā)現(xiàn)該單位使用的財(cái)務(wù)軟件后臺(tái)數(shù)據(jù)庫(kù)為InterBase數(shù)據(jù)庫(kù),無(wú)法通過(guò)AO軟件中的模板完成導(dǎo)入。為能更好地應(yīng)用計(jì)算機(jī)審計(jì),提高審計(jì)效率,為今后能進(jìn)一步分析和處理以InterBase為后臺(tái)數(shù)據(jù)庫(kù)的財(cái)務(wù)數(shù)據(jù)或業(yè)務(wù)數(shù)據(jù),我們查詢了大量的理論資料及咨詢了包括金審工程服務(wù)網(wǎng)站、上級(jí)審計(jì)機(jī)關(guān)信息中心專家,經(jīng)過(guò)無(wú)數(shù)次嘗試與失敗后,終于成功地進(jìn)行了取數(shù)與轉(zhuǎn)換。回想這一過(guò)程,有苦惱、有興奮,更多的是欣慰,故形成此文,供更多的同仁們探討交流及學(xué)習(xí)。
首先,我們來(lái)了解一下InterBase數(shù)據(jù)庫(kù):InterBase誕生。
于20世紀(jì)80年代,它提供了在單機(jī)或多用戶環(huán)境中的快速數(shù)據(jù)處理及共享的工具。應(yīng)用面偏向于緊湊型應(yīng)用(最小安裝包才1M多),每個(gè)數(shù)據(jù)庫(kù)以單獨(dú)的文件形式存儲(chǔ)。現(xiàn)行主要為InterBase5.6、6.5、7.0等版本,其中5.6版本是該單位財(cái)務(wù)軟件的后臺(tái)數(shù)據(jù)庫(kù)版本。該數(shù)據(jù)庫(kù)由于其緊湊型的特點(diǎn),其自身提供的技術(shù)平臺(tái)功能十分有限,對(duì)數(shù)據(jù)的分析和轉(zhuǎn)換幾乎都要依賴于第三方軟件,加上全英文的操作界面,為審計(jì)人員設(shè)置了非常大的障礙。
其次,簡(jiǎn)單介紹下ODBC數(shù)據(jù)源,即Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)互連),是微軟公司為了協(xié)調(diào)各不同數(shù)據(jù)開(kāi)發(fā)公司提供的統(tǒng)一的數(shù)據(jù)庫(kù)訪問(wèn)標(biāo)準(zhǔn)API(應(yīng)用程序編程接口),其強(qiáng)大的數(shù)據(jù)庫(kù)鏈接功能可以讓我們很好的在陌生數(shù)據(jù)庫(kù)與熟悉的數(shù)據(jù)庫(kù)之間建立數(shù)據(jù)接口,從而實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入導(dǎo)出。需要提醒的是不同的數(shù)據(jù)庫(kù)ODBC調(diào)用時(shí)需要不同的ODBC驅(qū)動(dòng),這些驅(qū)動(dòng)是由數(shù)據(jù)庫(kù)開(kāi)發(fā)商根據(jù)API標(biāo)準(zhǔn)編制的。
現(xiàn)在我們的轉(zhuǎn)換工作可以開(kāi)始了:
第一步,安裝調(diào)試InterBase。首先將被審計(jì)單位的InterBase數(shù)據(jù)庫(kù)文件“某公司賬套.GDB”拷貝到本地計(jì)算機(jī)上,設(shè)置路徑D:\\數(shù)據(jù)。安裝好InterBase5.6并測(cè)試數(shù)據(jù)是否連通。之后退出InterBase5.6,關(guān)閉所有有關(guān)InterBase的系統(tǒng)服務(wù)項(xiàng)后安裝InterBase6.5,再次測(cè)試數(shù)據(jù)是否連通。需要重點(diǎn)強(qiáng)調(diào)和說(shuō)明的是:其一,不能夠在被審計(jì)單位的計(jì)算機(jī)上進(jìn)行以上的操作,因?yàn)樵谕挥?jì)算機(jī)上安裝5.6、6.5版本后可能導(dǎo)致前臺(tái)財(cái)務(wù)軟件無(wú)法調(diào)用數(shù)據(jù)庫(kù)數(shù)據(jù)。其二,安裝5.6版本是因?yàn)镮nterBase數(shù)據(jù)庫(kù)版本系列中只有5.6版本(或更早)提供了有效的ODBC驅(qū)動(dòng)(網(wǎng)絡(luò)上提供的很多ODBC驅(qū)動(dòng)都是無(wú)效的)。最后,必須裝6.5版本是因?yàn)橹挥性?.5以上版本才能實(shí)現(xiàn)通過(guò)ODBC數(shù)據(jù)源與其他數(shù)據(jù)庫(kù)建立互連。
第二步,設(shè)置ODBC數(shù)據(jù)源。我們直接在D:\\數(shù)據(jù)路徑下新建一個(gè)文本文件,然后輸入以下內(nèi)容:
[ODBC]
DRIVER=INTERSOLV InterBase ODBC Driver (*.gdb)
SERVER=
UID=SYSDBA
DB=
其中:“SERVER=”后面需要填寫(xiě)的是本地計(jì)算機(jī)的名稱,“DB=”處需要填寫(xiě)InterBase數(shù)據(jù)文件的絕對(duì)路徑:D:\\數(shù)據(jù)\\某公司賬套.gdb。然后將此文本文件更名為“InterBase數(shù)據(jù)源.dsn”。
第三步,數(shù)據(jù)轉(zhuǎn)換。在保證InterBase6.5運(yùn)行正常,數(shù)據(jù)連通成功的條件下,運(yùn)行SQL企業(yè)管理器,新建數(shù)據(jù)庫(kù),使用SQL的數(shù)據(jù)導(dǎo)入導(dǎo)出功能,通過(guò)ODBC數(shù)據(jù)接口,已經(jīng)可以完成數(shù)據(jù)的導(dǎo)出了(可能有三張表無(wú)法導(dǎo)出,但不影響結(jié)果),SQL數(shù)據(jù)庫(kù)中的導(dǎo)入導(dǎo)出操作就不具體表述了。
第四步,SQL中的表結(jié)構(gòu)分析和數(shù)據(jù)處理。將數(shù)據(jù)表導(dǎo)入到SQL后,就可以進(jìn)行數(shù)據(jù)分析了,通過(guò)一定的整理和分析后能夠?qū)階O現(xiàn)場(chǎng)審計(jì)實(shí)施系統(tǒng)里。由于可能涉及到產(chǎn)權(quán)等問(wèn)題,此處只能略微提示幾個(gè)重要方面:一是余額表和憑證表中“科目代碼”字段是以科目代碼表中的“科目序號(hào)”為索引的,需要對(duì)余額表及憑證表中的科目代碼字段進(jìn)行替換。參考語(yǔ)句:
Select <需要的字段名稱……> from
<需要替換的表名> a left join <科目代碼表>b
on a.<科目序號(hào)>=b.<科目序號(hào)>
二是科目余額表與憑證表里的會(huì)計(jì)年份和月份兩個(gè)字段是合并的,按照類似“200901”的文本格式保存,需要使用函數(shù)分割出年度和月份。參考語(yǔ)句:
Alter table <表名>
Add year char(8),month char(8)
Update <表名>
Set year=left(<字段名>,4),month=right(<字段名>,2)
三是在數(shù)據(jù)導(dǎo)入SQL時(shí),“期初余額”、“借方發(fā)生額”等很多數(shù)值型字段存在很多空值,在導(dǎo)入AO時(shí)系統(tǒng)會(huì)提示導(dǎo)入函數(shù)出錯(cuò),無(wú)法完成導(dǎo)入。需要將空值字段替換為0。參考語(yǔ)句:
Update <表名>
Set <字段名稱>=0 where <宇段名稱> is 1
數(shù)據(jù)轉(zhuǎn)換是否成功是能否更好地應(yīng)用計(jì)算機(jī)審計(jì)的前提要件,其重要性不言而喻。現(xiàn)實(shí)工作中,審計(jì)人員面對(duì)的是市面上幾十種財(cái)務(wù)軟件和近十種數(shù)據(jù)庫(kù)軟件,并且不同的軟件之間的結(jié)構(gòu)、理論基礎(chǔ)以及編程語(yǔ)言自成體系、各不相同。這無(wú)疑是對(duì)審計(jì)人員的強(qiáng)大考驗(yàn)。此次對(duì)InterBase數(shù)據(jù)庫(kù)數(shù)據(jù)的成功轉(zhuǎn)換,不但能增加對(duì)InterBase數(shù)據(jù)庫(kù)的了解與掌握能力,同時(shí)還能積累使用ODBC建立數(shù)據(jù)庫(kù)間鏈接的實(shí)際操作經(jīng)驗(yàn),對(duì)今后的工作有很好的借鑒意義。(作者單位:宜春市審計(jì)局)