實(shí)務(wù)操作
東奧會(huì)計(jì)在線 >> 實(shí)務(wù)操作 >> 會(huì)計(jì)入門(mén)與出納實(shí)操 >> 財(cái)會(huì)電算化 >> 正文
三,、解決辦法
要實(shí)現(xiàn)批量導(dǎo)入,,必須編寫(xiě)程序,,實(shí)現(xiàn)上述分析過(guò)程中的解壓、添加備份設(shè)備,、還原數(shù)據(jù)庫(kù),、抽取數(shù)據(jù)等步驟。我們首先對(duì)每一個(gè)關(guān)鍵步驟給出相應(yīng)的解決辦法,,最后再給出一個(gè)總體的流程,。
文件解壓;利用Win32的API:ShellExecuteEx,調(diào)用WinRar將壓縮文件解壓到指定的臨時(shí)文件夾下,,并得到解壓程序的句柄(前提是已經(jīng)安裝了WinRar軟件),。其中要用到SHELLEXECUTEINFO這個(gè)結(jié)構(gòu),用來(lái)指定WinRar的路徑以及相應(yīng)的解壓參數(shù),。具體可以查閱Win32 API幫助,。
添加設(shè)備;利用SQL Server 2000的存儲(chǔ)過(guò)程sp_addumpdevice添加設(shè)備文件。
還原數(shù)據(jù)庫(kù);利用SQL Server 2000的命令Restore DATABASE,,從設(shè)備中的備份還原數(shù)據(jù)庫(kù),。另外,查看備份文設(shè)備中的備份數(shù)據(jù)庫(kù)信息可以使用命令:RESTORE HEADERONLY.
刪除備份設(shè)備;可以使用存儲(chǔ)過(guò)程:sp_dropdevice.詳細(xì)信息可以查閱SQL Server 2000的幫助文檔,。
接下來(lái)我們就給出批量導(dǎo)入用友8.51備份文件的主要流程:
定義SHELLEXECUTEINFO類(lèi)型的變量:SI
指定SI的相關(guān)參數(shù):動(dòng)作為“Open”,、文件為WinRar的執(zhí)行文件(指定長(zhǎng)文件名)
對(duì)每個(gè)備份文件UFDATA.BA_,循環(huán)處理(循環(huán)1)
得到文件路徑和文件名,,以及某些賬套信息(公司,、年份等等)
指定SI的參數(shù)為:x sFile *.* sTemp
(注:sFile為備份文件的長(zhǎng)文件名,sTemp為一個(gè)臨時(shí)文件夾)
調(diào)用:ShellExecuteEx SI
獲取SI的狀態(tài)直到它執(zhí)行完畢
在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行:sp_addumpdevice disk,,U8Back,,physical_name
(注:U8Back為我們?yōu)樵O(shè)備取的名,physical_name為解壓后得到的UFDATA文件的長(zhǎng)文件名)
執(zhí)行:RESTORE HEADERONLY From U8Back,,得到設(shè)備中的備份列表記錄集
(注:一條記錄對(duì)應(yīng)于一個(gè)備份)
對(duì)備份列表記錄集的每條記錄,,循環(huán)處理(循環(huán)2)
根據(jù)列表記錄集中的內(nèi)容,得到數(shù)據(jù)庫(kù)的某些信息(如賬套年份)
Restore DATABASE UF8 From U8Back with File=file_number,,Move Ufmodel
To DataFile,,MOVE Ufmodel_LOG TO LogFile, replace
(注:file_number為從備份列表記錄集中得到的要還原的備份集編號(hào),,DataFile與LogFile分別為還原后數(shù)據(jù)文件與日志文件的長(zhǎng)文件名)
抽取數(shù)據(jù)庫(kù)中相應(yīng)的數(shù)據(jù)
(注:如果把多個(gè)賬套數(shù)據(jù)合并到一起,,需要根據(jù)前面得到的賬套信息將數(shù)據(jù)進(jìn)行區(qū)分,,例如:將各表加入賬套的年份、公司,、地區(qū)等字段或是能區(qū)分各賬套的一個(gè)關(guān)鍵字字段進(jìn)行區(qū)分)
結(jié)束循環(huán)1
在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行:sp_dropdevice U8Back,刪除設(shè)備
結(jié)束循環(huán)2
善后工作,,如刪除臨時(shí)文件等
四,、結(jié)束語(yǔ)
本文是作者的一次實(shí)際經(jīng)歷的總結(jié)。在一次企業(yè)審計(jì)中,,審計(jì)人員拿到了一百六十多個(gè)備份文件,,并且任務(wù)要求將這些賬套中的有關(guān)數(shù)據(jù)進(jìn)行合并,以便分析,。最后我們以本文所述辦法進(jìn)行處理,,代碼寫(xiě)完后,用了不到一個(gè)晚上的時(shí)間,,就將所有賬套處理完成,。
責(zé)任編輯:初曉微茫
- 上一篇文章: 用友U8記賬憑證修改方法匯總
- 下一篇文章: 用友:如何生成現(xiàn)金流量表