全通用關(guān)系型表格打印模塊設(shè)計(jì)研究-1_第1頁(yè)
全通用關(guān)系型表格打印模塊設(shè)計(jì)研究-1_第2頁(yè)
全通用關(guān)系型表格打印模塊設(shè)計(jì)研究-1_第3頁(yè)
全通用關(guān)系型表格打印模塊設(shè)計(jì)研究-1_第4頁(yè)
全通用關(guān)系型表格打印模塊設(shè)計(jì)研究-1_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

全通用關(guān)系型表格打印模塊設(shè)計(jì)研究

[摘要]目前常見的系統(tǒng)開發(fā)軟件(以VisualFoxPro為例)的報(bào)表設(shè)計(jì)器雖然使用方便,但不能滿足各行業(yè)日常工作靈活多樣的表格打印需要。過(guò)去D0s狀態(tài)下表格打印雖較好處理,但在windows環(huán)境下卻效果欠佳。因此,有必要改造和完善這些軟件的報(bào)表設(shè)計(jì)器,并實(shí)現(xiàn)多種表格樣式之間的數(shù)據(jù)交換,設(shè)計(jì)一個(gè)集數(shù)據(jù)交換于一體的關(guān)系型表格全通用打印模塊。

[關(guān)鍵詞]全通用;報(bào)表;表格;打印

打印的表格按欄目嵌套分類,一般有兩種基本類型。一是關(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è)置的功能。可以選擇打印機(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)表(TEMPSTRU.DBF)的結(jié)構(gòu)信息:

(2)打印欄目標(biāo)題及字段變量名稱:從中間打印結(jié)構(gòu)表(TEMPSTRU.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)外還沒(méi)有一個(gè)軟件能夠?qū)⑺泄δ馨萜渲小?/p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論