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