計算機畢業論文:淺談VFP報表打印問題
時間:2022-10-08 04:07:00
導語:計算機畢業論文:淺談VFP報表打印問題一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:本文簡介了在vfp報表打印時如何解決經常遇到的幾個問題。
關鍵字:報表設計器
1.如何打印指定的頁
通常情況下,VFP默認打印當前報表的全部內容,這給使用者帶來不便,那么如何實現讓系統打印指定范圍的內容呢?其實很簡單,只需在報表打印語句中加上關于打印范圍限制的關鍵字短語RANGE即可。如:打印報表XXX.FRX的第2至第5頁,可使用如下命令
REPORTFORMXXX.FRXRANGE2,5TOPRINTER
為增強該語句功能的靈活性,可引入表示欲打印范圍的兩個參數x和y,分別代表打印的起始和終止頁碼,將打印命令改寫為
REPORTFORMXXX.FRXRANGEx,yTOPRINTER
2.如何計算總頁數,以實現每頁均打印“第x頁共y頁”字樣
VFP系統變量_PAGENO可提供當前的打印頁號,但卻沒有能返回總頁數的系統變量,若要實現在報表的每一頁均打印“第x頁共y頁”字樣,打印前可根據細節區所打印的記錄條數,進行計算,然后再打印,實現方法如下:
PUBLICmPAGE
SELEXXX&&XXX為欲打印報表的數據源
XX=35&&XX為每頁報表細節區所打印的記錄條數
mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1)&&mPAGE為報表總頁數
在報表頁腳注(或其他合適位置)添加如下信息即可:
"第"+allt(str(_pageno))+"頁共"+allt(str(mPAGE))+"頁"
3.如何使計算機打印紙張類型適合于所設計報表
報表在設計時能夠正常打印,可是安裝到其他計算機或重裝系統后,就會出現“XXX帶區太大不能放入頁中”等提示,而且無法正常退出(尤其是對報表設計時采用自定義紙張的程序),這是為什么呢?現作如下解釋:
我們用報表設計器設計的報表打印程序,保存退出后,磁盤上就會出現.FRX和.FRT文件,我們的所有設計均保存在這兩個文件中。在VFP中.FRX相當于.DBF表,.FRT相當于.FPT備注型文件,我們用USEXXX.FRX可以象打開.DBF文件一樣打開.FRX文件,在.FRX文件中有個Expr備注型字段名,在這個字段名中有如下與打印設置相關的內容(不同設置內容稍有差別):
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表示系統默認打印機類型為EpsonLQ-1600K
PAPERSIZE=256該值256表示是自定義紙張(若=9表示A4紙張、=13表示B5紙張)
PAPERLENGTH=2800表示報表設計時紙張長度
PAPERWIDTH=2400表示報表設計時紙張寬度
實際打印時之所以會上述提到的問題,是因為在用戶環境中或Windows系統重新安裝后,系統一般默認的是A4打印紙,與我們設計時保存在.frx文件里的紙張類型不符,因而造成打印出錯。為此,筆者編寫了如下一段檢測紙張類型的代碼,這段代碼可以幫助我們很好地解決因紙張類型不符所帶來的問題。
USExxx.frxIN0ALIASmFrx&&在空閑工作區以mFrx別名打開xxx.frx文件
x=atcline(''''PAPERSIZE'''',mFrx.Expr)&&取得參數PAPERSIZE在Expr字段中的行
mTYPE_1=subs(mline(mFrx.Expr,x),11)&&取得設計時保存的紙張類型
mTYPE_2=allt(str(Prtinfo(2)))&&取得當前打印機默認的紙張類型
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''''&&關閉xxx.frx文件
ifmTYPE_1=mTYPE_2&&如果相符,則正常打印
reportformxxx.frxtoprinternoconsole
else
Messagebox(''''請設置打印機紙張類型為自定義:長=''''+mLEN+'''',寬=''''+mWIDTH,0+48+0,''''提示'''')
reportformxxx.frxtoprinterprompt
end
注:本文中相應命令和程序段均在VFP6.0環境下運行通過。