- 相關(guān)推薦
全通用關(guān)系型表格打印模塊設(shè)計研究論文
打印的表格按欄目嵌套分類,一般有兩種基本類型。一是關(guān)系型表格,即表格內(nèi)各欄目之間是一種平行的關(guān)系,不存在欄目之間的嵌套;二是結(jié)構(gòu)型表格,即表格內(nèi)有的欄目有更下一級的小欄目,可能某些小欄目還會有更下一級的子欄目,從而形成表格中的欄目嵌套,反映欄目之間數(shù)據(jù)的包含與被包含關(guān)系。從這兩類表格的應(yīng)用頻率看,關(guān)系型表格簡便適用的優(yōu)點更為人們所青睞,因而使用很普遍。本模塊專門針對關(guān)系型表格打印而設(shè)計。
關(guān)系型表格全通用打印是指在指定的關(guān)系型數(shù)據(jù)表(指*.DBF文件,下同)文件中,可任意選擇打印字段(形成表格中的欄目),任意篩選打印記錄(形成表格中的各行),從而實現(xiàn)隨心所欲的關(guān)系型表格打印,其通用性主要體現(xiàn)在適應(yīng)任何數(shù)據(jù)表文件的表格打印方面。本設(shè)計就以會計軟件中的打印功能為例。
一、設(shè)計的目的及意義
會計是一個專門處理一定時空范圍內(nèi)經(jīng)濟(jì)數(shù)據(jù)的信息系統(tǒng),其數(shù)據(jù)量大、動態(tài)性強(qiáng)、結(jié)構(gòu)復(fù)雜,表格在會計核算中被廣泛使用,會計主要是利用表格形式定期和不定期地提供會計信息。實現(xiàn)會計電算化以后,很多各種格式的賬表需要打印輸出,其賬表打印的工作量很大,一方面要滿足會計檔案存檔保存的需要,另一方面又要滿足各項經(jīng)濟(jì)管理的需要。因而表格打印始終是會計軟件中一個十分重要的模塊,尤其是全通用表格打印更具有十分重要的理論意義和實踐意義。
從目前系統(tǒng)軟件提供的表格樣式看,一般主要有Vis-ualFoxPro(以下簡稱VFP)表格、Excel電子表格、Word表格、Html超文本表格4種。其中VFP表格是軟件本身提供的一種表格,它的表格處理功能遠(yuǎn)不及Excel電子表格和Word表格,而Html超文本表格的優(yōu)點是可以在網(wǎng)上發(fā)布,同時它本身還提供將超文本表格很方便的轉(zhuǎn)換為Word表格的功能。VFP本身不能同時提供Excel電子表格、Word表格和Html超文本表格,但我們完全可以立足于VFP系統(tǒng),借助于Windows的某些功能,從VFP的關(guān)系型數(shù)據(jù)表文件中采集數(shù)據(jù),同時打印輸出上述4種樣式的表格,從而將數(shù)據(jù)交換和表格打印集于一身,實現(xiàn)全通用表格打印,彌補(bǔ)VFP系統(tǒng)本身報表設(shè)計器的不足.
因此,有必要設(shè)計一個全通用打印模塊實現(xiàn)以下兩個方面的功能:一是利用VFP系統(tǒng)報表設(shè)計器的某些功能,彌補(bǔ)該設(shè)計器的不足,實現(xiàn)VFP表格打印輸出;二是實現(xiàn)上述4種樣式表格的全通用打印輸出,以VFP的*.DBF表文件為基礎(chǔ),實現(xiàn)各種表格的數(shù)據(jù)交換。順利兌現(xiàn)這兩大設(shè)計目前具有十分重要的積極意義。
不論是VFP,還是ORACLE、POWERBUILDER等等,它們自身都附帶了報表設(shè)計器,用戶可以根據(jù)需要靈活應(yīng)用,設(shè)計出不同格式的報表。但由于VFP、ORACLE、POWERBUILDER等都是國外開發(fā)的系統(tǒng)軟件,這些軟件事先擬定好的報表格式一般都不符合中國人對表格的審美觀,即打印輸出的表格不具有中國特色。中國人普遍認(rèn)同的報表格式即帶有報表名稱,左右標(biāo)題,左右注腳,尤其是有網(wǎng)格型的表格。另外,VFP系統(tǒng)附帶的報表設(shè)計器由于過度遷就操作性,以致不能滿足使用者靈活多樣的需要,報表一經(jīng)定義好,格式基本上就已經(jīng)定型,所有的信息都保存在,FRX和.FRT兩個報表文件中,其中的字段個數(shù)、字段捧列順序、源數(shù)據(jù)表、索引名稱、欄目寬度、欄目標(biāo)題、報表樣式等都已經(jīng)固化在文件中,若需修改則要進(jìn)行繁瑣的面向?qū)ο蟛僮,使用起來很不方便?/p>
VFP從DOS版本發(fā)展到現(xiàn)在,報表功能已經(jīng)很強(qiáng)大了。過去在DOS狀態(tài)下打印表格,其表格線是按特定的11個表格線符號,按字符控制的,DOS的這種設(shè)計方法由于Windows的象素控制原因已經(jīng)很不適用。在DOS環(huán)境下,報表設(shè)計方式是將報表生成的各大要素保存在內(nèi)存變量中,在需要時,可以恢復(fù)內(nèi)存變量直接運(yùn)行程序即可打印出自己事先定義好的報表。這種方式下,不存在Windows下象素的影響,打印的表格整齊美觀,而且速度較快,但這種打印方式有個致命的缺點,就是每次都要自定義打印參數(shù)以及打印的五大要素,然后保存在內(nèi)存變量文件中,這種打印方式增加了工作量,而且缺乏通用性和靈活性。PoxPro發(fā)展到Windows環(huán)境,由于象素的關(guān)系,原有報表設(shè)計方式顯然有自身的缺點,因此報表的設(shè)計一直是困擾VFP開發(fā)者的一個難題。在VFP面向?qū)ο蟮木幊汰h(huán)境下,為了體現(xiàn)面向?qū)ο蟮膬?yōu)點以及解決象索的問題,報表設(shè)計器由此誕生。報表設(shè)計器的原理就是提供一個面向?qū)ο蟮慕缑娼o操作者通過手工操作,然后將操作者的定義內(nèi)容保存到.FRX/.FRT兩個文件中,在生成報表時,再從報表文件.FRX/.FRT兩個文件中取值從而生成報表。從報表生成的原理中我們可以看出,操作者定義的所有參數(shù)保存在.FRX/.FRT兩個文件中,那么,我們只需研究.FRY/.FRT文件的結(jié)構(gòu),然后對其中的值根據(jù)自己的需要不就可以定義出我們所需的報表了嗎,并且完全可以脫離報表設(shè)計器繁瑣的操作和固定的格式,我們可以隨心所欲地進(jìn)行定義,從而一個全通用的報表設(shè)計方式變成了可行。利用VFP強(qiáng)大地數(shù)據(jù)處理能力,從而可以事先對選定數(shù)據(jù)表的任意字段、任意捧列順序,按需要任意定義條件打印,利用VFP內(nèi)存變量可以事先自定義大標(biāo)題、小標(biāo)題、左標(biāo)題、右標(biāo)題、左注腳、右注腳以及左頁邊距等等,利用微軟產(chǎn)品集成的特點,可以靈括與我們常用的軟件進(jìn)行數(shù)據(jù)交換,實現(xiàn)優(yōu)勢互補(bǔ)。眾所周知在微軟產(chǎn)品中Excel具有強(qiáng)大的數(shù)據(jù)處理能力以及最強(qiáng)大的打印預(yù)覽功能,WORD具有很強(qiáng)大的文字管理功能,對于表格WORD格式提供了許多的自動套用格式,從而可以打印出各種各樣類型的報表,加上強(qiáng)大的文字處理功能,從而可以設(shè)計出各種各樣所需的報表;在網(wǎng)絡(luò)環(huán)境下,網(wǎng)絡(luò)數(shù)據(jù)查詢以及WEB發(fā)布必不可少,因此HTML超文本表格就極具實用價值。由于我國普遍使用的是網(wǎng)格型報表打印,因此本系統(tǒng)只有默認(rèn)的網(wǎng)格型報表一種方式,但這種方式已經(jīng)基本能滿足各個企業(yè)不同財務(wù)報表打印的需要了。
二、模塊組成及功能
(一)模塊文件構(gòu)成
本關(guān)系型表格全通用打印模塊的系統(tǒng)磁盤文件有以下三個。
1.表單文件(KHLSC)(和KHI.SCT)兩個,其中KHI.
SCX是表單的庫文件,KHI.SCT是表單的備注文件。每設(shè)計一個表單均有這兩個磁盤文件,利用表單設(shè)計器直接操作的是KHLSCX文件。眾所周知,表單設(shè)計器中有很多控件可供使用,利用這些控件既可設(shè)計出較好的界面,又可由操作者現(xiàn)場指定打印參數(shù)。關(guān)系型表格全通用打印設(shè)計中,有很多與打印有關(guān)的參數(shù),需要利用有關(guān)控件進(jìn)行大量的人機(jī)交互來確定,因而必須利用表單進(jìn)行設(shè)計,而不可只用命令文件來設(shè)計。
2.打印文件的登錄表文件(DYMEM.DBF)一個。該表文件主要是為表單中的組合框控件賦值提供數(shù)據(jù),它有三個字符型字段,即“數(shù)據(jù)源表”、“報表文件”、“報表名稱”和一個“打印設(shè)置”備注型字段,它登記了當(dāng)前目錄所有打印文件及其相匹配的數(shù)據(jù)源表文件和報表名稱,隨著新建或刪除操作的進(jìn)行,該表文件中的記錄會動態(tài)更新。
(二)模塊主要功能
1.新建打印文件功能
(1)可以選擇本機(jī)任意文件夾中的DBF文件,也可以選擇網(wǎng)上鄰居中計算機(jī)中的DBF文件,使打印不只限于本機(jī)當(dāng)前目錄的DBF文件,還可通過數(shù)據(jù)轉(zhuǎn)換接口將其他軟件的數(shù)據(jù)導(dǎo)入進(jìn)行打印。
(2)打印任意字段任意排列順序的功能?梢赃x擇當(dāng)前打開的數(shù)據(jù)表的任意字段打印,可以靈活地進(jìn)行選擇,操作在選擇之后撤銷選擇也可以恢復(fù)字段初始的排列頤序。
(3)選擇任意字段組合進(jìn)行升序、降序撐列的功能。
(4)自定義表頭大標(biāo)題、小標(biāo)題、左標(biāo)題、右標(biāo)題、左注腳、右注腳功能。系統(tǒng)默認(rèn)大標(biāo)題為當(dāng)前打開數(shù)據(jù)表以絕對路徑形式返回的文件名稱,小標(biāo)題賦值為空,右標(biāo)題默認(rèn)為打印帶總頁數(shù)的頁碼,操作者若不想打印頁碼也可以自定義右標(biāo)題,左注腳默認(rèn)為打印操作者,右注腳為打印日期,這些參數(shù)操作者都可以修改。
(5)自定義打印標(biāo)題欄標(biāo)題的功能,操作者可以修改打印欄目的標(biāo)題和打印欄目的寬度,并且可以在原選定字段的基礎(chǔ)上再次確認(rèn)打印的字段,但是注意打印字段不要修改。
(6)由系統(tǒng)自動生成邏輯條件和操作者自定義邏輯條件的功能,既方便了專業(yè)操作者靈活操作又兼顧了普通操作者的簡單使用。
(7)提供強(qiáng)大的各種不同方式的打印功能,包括VFP報表打印,Excel電子表格打印、Word表格打印、HTML超文本表格打印功能?梢猿浞掷肊xcel電子表格的數(shù)據(jù)加工能力和公認(rèn)地最強(qiáng)大地打印預(yù)覽功能,Word表格的表格樣式及文字處理功能、HTML超文本表格的WEB發(fā)布功能既便于打印也便于數(shù)據(jù)的發(fā)布。
(8)操作者可以選擇打印表頭表尾,也可以直接打印表格的功能,以及各個打印參數(shù)的保存以備下次直接打印或編輯時使用.自定義打印左頁邊距的功能,可以使操作者根據(jù)表格的寬度和紙型根據(jù)需要自動進(jìn)行調(diào)整。
(9)自定義表頭字體和表體字體的功能,對打印機(jī)進(jìn)行打印設(shè)置的功能?梢赃x擇打印機(jī),打印紙型,打印方向等等。該功能對HTML超文本表格不起作用。
2.編輯打印文件功能
此功能是將事先保存在打印內(nèi)存變量中的文件參數(shù)賦值給表單中的各個控件,可以方便操作者修改和觀察。該功能要用到一個報表登錄文件DYMEM.DBF,該功能只對VFP報表起作用。操作者可以再次選擇打印字段,若字段改變則初始化的打印欄目標(biāo)題也隨之改變,未被選中的事先選擇的捧序字段將被過濾掉:也可以重新定義表體欄和欄目寬度等等,該功能是新建功能的重復(fù),只是增加了對各個控件(包括初始打印字段,拌序字段、排序類型、表頭表尾項目、左頁邊距、欄目標(biāo)題、欄目寬度、是否打印表頭表尾等)初始賦值的功能。
3.打印輸出表格功能
此功能可以方便對原先定義好的報表文件(以下劃線開頭的內(nèi)存變量文件,該文件中保存有以DY打頭的22個內(nèi)存變量)直接進(jìn)行打印,并且該功能不會產(chǎn)生.FRX和.FRT文件,這種類型的文件由程序自動生成,系統(tǒng)僅作為臨時文件使用。此功能只對VFP報表起作用。
4.查詢打印信息功能
操作者可以查看已經(jīng)建立的打印文件的己選字段、未選字段、源數(shù)據(jù)表以及系統(tǒng)定義的22個打印內(nèi)存變量,和打印文件參數(shù)。
三、系統(tǒng)設(shè)計思路及數(shù)據(jù)流程圖
(一)全通用關(guān)系型表格打印實現(xiàn)原理
1.報表的構(gòu)成
一般情況下報表包含表頭、表體和表尾三部分:
(1)表頭。在每頁的頂端,顯示報表的標(biāo)題及其他提示信息等。
(2)表體。包含報表的主體,是報表的關(guān)鍵部分,一般由循環(huán)數(shù)據(jù)項構(gòu)成。
(3)表尾。出現(xiàn)在每頁的底端,顯示打印操作者、日期等文本信息等。
2.VFP報表信息庫的結(jié)構(gòu)
我們知道在VFP中,報表的信息是保存在以.FRX為擴(kuò)展名的數(shù)據(jù)庫文件中(備注文件以.FRT為擴(kuò)展名),了解報表數(shù)據(jù)庫的結(jié)構(gòu)有助于問題的解決。報表庫(.FRX)的結(jié)構(gòu)有74個字段,各字段的主要參數(shù)摘錄如表所示。
3.常用控制對象的特征
報表數(shù)據(jù)庫的字段Objtype(對象類型)和Objcode(對象代碼)的值確定了控制對象的類型。為節(jié)省篇幅僅把最常用制表控制對象(文字,直線,表達(dá)式等)的特征值如表2所示。
其他常用到的字段有:①水平坐標(biāo)(Hposh②寬度(Wid-th);③表達(dá)式類型(Fillchar);④字體(Fontface);⑤對齊方式(Offset)。
4.全通用關(guān)系型表格打印的實現(xiàn)
從數(shù)據(jù)庫中自動讀取字段名、類型、寬度,通過修改報表庫(.FRX)的內(nèi)容達(dá)到動態(tài)制表的目的,其算法設(shè)計如下:
(1)欄目寬度:定義二維數(shù)組XMCD(NJSQ,4)用于存放中間打印結(jié)構(gòu)表(TEMP STRU.DBF)的結(jié)構(gòu)信息:
(2)打印欄目標(biāo)題及字段變量名稱:從中間打印結(jié)構(gòu)表(TEMP STRU.DBF)獲取打印欄目寬度存入數(shù)組MXZD(NJSQ,3),字段變量存入數(shù)組MXZD(NJSQ,1):
(3)獲取打印表頭表尾項目,通過自定義方法程序AP-PHEAD自定義方法程序向報表添加表頭項目;
(4)通過自定義方法程序APPLINE自定義方法程序向報表中添加線條;
(5)通過替換命令REPLACE對.FRX文件中的參數(shù)進(jìn)行修改以獲得我們所需的網(wǎng)格型表格樣式,修改方式同修改.DBF文件一樣。
最后,報表生成之后,若需要通過Excel、Word或超文本表格方式輸出報表,可利用createobjed()函數(shù)將表格直接輸出到相關(guān)軟件。
從以上動態(tài)VFP報表的實現(xiàn)原理可看出,本設(shè)計打印輸出VFP的表格只是巧妙的充分利用了它的.FRX庫,存在磁盤上的報表文件卻是*.MEM文件,而不是它的報表文件.FRX和.FRT。
四、小 結(jié)
本設(shè)計所研究僅僅是利用VFP實現(xiàn)通用關(guān)系型表格打印。但是,基于此設(shè)計思想,深入設(shè)計還可實現(xiàn)多行表頭的結(jié)構(gòu)型表的打印,字段合并和分解打印、更復(fù)雜的單據(jù)打印以及自定義紙張,自定義打印機(jī)等等,但目前在國內(nèi)外還沒有一個軟件能夠?qū)⑺泄δ馨萜渲。要實現(xiàn)一個真正的全通用表格打印,而不僅僅限于關(guān)系型表格的通用性,這些問題還有待進(jìn)一步深入研究。
主要參考文獻(xiàn)
[1]黃昌勇,電算會計基礎(chǔ)[M].上海:立信會計出版社,2002.
[2]張洪舉.visualFoxPro程序設(shè)計參考手冊[M].北京:人民郵電出版社,2004.
[3]Jeffrey D.Ullman Jennifer Widom AFirst Course ln Database Systems數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(影印版)[M].北京:清華大學(xué)出版社,2000.
[4]陳隆偉等.會計電算化全通用理論與會計軟件的全通用[J].財會月刊(會計),2005,(4).
【全通用關(guān)系型表格打印模塊設(shè)計研究論文】相關(guān)文章:
本錢模塊改進(jìn)的研究論文04-27
飛機(jī)裝配型架模塊化設(shè)計技術(shù)研究05-03
25型客車的模塊化設(shè)計04-26
應(yīng)用型本科畢業(yè)設(shè)計(論文)與學(xué)生應(yīng)用能力培養(yǎng)的關(guān)系研究05-02
城市規(guī)劃設(shè)計和建筑設(shè)計之間的關(guān)系研究論文04-27
飛機(jī)飛行仿真系統(tǒng)核心模塊設(shè)計研究05-02
作業(yè)成本法下成本模塊改進(jìn)的研究論文04-28
干涉型全光纖退偏陀螺中偏振過程的研究04-26
寧夏一研究生打印論文超千頁04-30