計(jì)算機(jī)畢業(yè)論文:淺談VFP報(bào)表打印問題

時(shí)間:2022-10-08 04:07:00

導(dǎo)語:計(jì)算機(jī)畢業(yè)論文:淺談VFP報(bào)表打印問題一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

計(jì)算機(jī)畢業(yè)論文:淺談VFP報(bào)表打印問題

摘要:本文簡介了在vfp報(bào)表打印時(shí)如何解決經(jīng)常遇到的幾個(gè)問題

關(guān)鍵字:報(bào)表設(shè)計(jì)器

1.如何打印指定的頁

通常情況下,VFP默認(rèn)打印當(dāng)前報(bào)表的全部內(nèi)容,這給使用者帶來不便,那么如何實(shí)現(xiàn)讓系統(tǒng)打印指定范圍的內(nèi)容呢?其實(shí)很簡單,只需在報(bào)表打印語句中加上關(guān)于打印范圍限制的關(guān)鍵字短語RANGE即可。如:打印報(bào)表XXX.FRX的第2至第5頁,可使用如下命令

REPORTFORMXXX.FRXRANGE2,5TOPRINTER

為增強(qiáng)該語句功能的靈活性,可引入表示欲打印范圍的兩個(gè)參數(shù)x和y,分別代表打印的起始和終止頁碼,將打印命令改寫為

REPORTFORMXXX.FRXRANGEx,yTOPRINTER

2.如何計(jì)算總頁數(shù),以實(shí)現(xiàn)每頁均打印“第x頁共y頁”字樣

VFP系統(tǒng)變量_PAGENO可提供當(dāng)前的打印頁號,但卻沒有能返回總頁數(shù)的系統(tǒng)變量,若要實(shí)現(xiàn)在報(bào)表的每一頁均打印“第x頁共y頁”字樣,打印前可根據(jù)細(xì)節(jié)區(qū)所打印的記錄條數(shù),進(jìn)行計(jì)算,然后再打印,實(shí)現(xiàn)方法如下:

PUBLICmPAGE

SELEXXX&&XXX為欲打印報(bào)表的數(shù)據(jù)源

XX=35&&XX為每頁報(bào)表細(xì)節(jié)區(qū)所打印的記錄條數(shù)

mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1)&&mPAGE為報(bào)表總頁數(shù)

在報(bào)表頁腳注(或其他合適位置)添加如下信息即可:

"第"+allt(str(_pageno))+"頁共"+allt(str(mPAGE))+"頁"

3.如何使計(jì)算機(jī)打印紙張類型適合于所設(shè)計(jì)報(bào)表

報(bào)表在設(shè)計(jì)時(shí)能夠正常打印,可是安裝到其他計(jì)算機(jī)或重裝系統(tǒng)后,就會出現(xiàn)“XXX帶區(qū)太大不能放入頁中”等提示,而且無法正常退出(尤其是對報(bào)表設(shè)計(jì)時(shí)采用自定義紙張的程序),這是為什么呢?現(xiàn)作如下解釋:

我們用報(bào)表設(shè)計(jì)器設(shè)計(jì)的報(bào)表打印程序,保存退出后,磁盤上就會出現(xiàn).FRX和.FRT文件,我們的所有設(shè)計(jì)均保存在這兩個(gè)文件中。在VFP中.FRX相當(dāng)于.DBF表,.FRT相當(dāng)于.FPT備注型文件,我們用USEXXX.FRX可以象打開.DBF文件一樣打開.FRX文件,在.FRX文件中有個(gè)Expr備注型字段名,在這個(gè)字段名中有如下與打印設(shè)置相關(guān)的內(nèi)容(不同設(shè)置內(nèi)容稍有差別):

DRIVER=winspool

DEVICE=EpsonLQ-1600K

OUTPUT=LPT1:

ORIENTATION=0

PAPERSIZE=256

PAPERLENGTH=2800

PAPERWIDTH=2400

DEFAULTSOURCE=8

PRINTQUALITY=180

YRESOLUTION=180

TTOPTION=1

其中:

DEVICE=EpsonLQ-1600K表示系統(tǒng)默認(rèn)打印機(jī)類型為EpsonLQ-1600K

PAPERSIZE=256該值256表示是自定義紙張(若=9表示A4紙張、=13表示B5紙張)

PAPERLENGTH=2800表示報(bào)表設(shè)計(jì)時(shí)紙張長度

PAPERWIDTH=2400表示報(bào)表設(shè)計(jì)時(shí)紙張寬度

實(shí)際打印時(shí)之所以會上述提到的問題,是因?yàn)樵谟脩舡h(huán)境中或Windows系統(tǒng)重新安裝后,系統(tǒng)一般默認(rèn)的是A4打印紙,與我們設(shè)計(jì)時(shí)保存在.frx文件里的紙張類型不符,因而造成打印出錯(cuò)。為此,筆者編寫了如下一段檢測紙張類型的代碼,這段代碼可以幫助我們很好地解決因紙張類型不符所帶來的問題。

USExxx.frxIN0ALIASmFrx&&在空閑工作區(qū)以mFrx別名打開xxx.frx文件

x=atcline(''''PAPERSIZE'''',mFrx.Expr)&&取得參數(shù)PAPERSIZE在Expr字段中的行

mTYPE_1=subs(mline(mFrx.Expr,x),11)&&取得設(shè)計(jì)時(shí)保存的紙張類型

mTYPE_2=allt(str(Prtinfo(2)))&&取得當(dāng)前打印機(jī)默認(rèn)的紙張類型

x=atcline(''''PAPERLENGTH'''',mFrx.Expr)&&取得紙張長度在Expr字段中的行

mLEN=subs(mline(mFrx.Expr,x),13)&&取得紙張長度

x=atcline(''''PAPERWIDTH'''',mFrx.Expr)&&取得紙張寬度在Expr字段中的行

mWIDTH=subs(mline(mFrx.Expr,x),12)&&取得紙張寬度

usein''''mFrx''''&&關(guān)閉xxx.frx文件

ifmTYPE_1=mTYPE_2&&如果相符,則正常打印

reportformxxx.frxtoprinternoconsole

else

Messagebox(''''請?jiān)O(shè)置打印機(jī)紙張類型為自定義:長=''''+mLEN+'''',寬=''''+mWIDTH,0+48+0,''''提示'''')

reportformxxx.frxtoprinterprompt

end

注:本文中相應(yīng)命令和程序段均在VFP6.0環(huán)境下運(yùn)行通過。