久久99热66热这里只有精品,特黄特色的大片在线观看,亚洲日本三级在线观看,国产三级农村妇女在线,亚洲av毛片免费在线观看,哺乳叫自慰在线看,天天干美女av网

淺談VFP報表打印的問題

時間:2022-02-21 18:32:51 好文 我要投稿

淺談有關VFP報表打印的問題

  1.如何打印指定的頁

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

  REPORT FORM XXX.FRX RANGE 2,5 TO PRINTER

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

  REPORT FORM XXX.FRX RANGE x,y TO PRINTER

  2.如何計算總頁數,以實現每頁均打印“第x頁 共y頁”字樣

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

  PUBLIC mPAGE

  SELE XXX   && XXX為欲打印報表的數據源

  XX=35     && XX為每頁報表細節(jié)區(qū)所打印的記錄條數

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

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

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

  3.如何使計算機打印紙張類型適合于所設計報表

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

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

  DRIVER=winspool

  DEVICE=Epson LQ-1600K

  OUTPUT=LPT1:

  ORIENTATION=0

  PAPERSIZE=256

  PAPERLENGTH=2800

  PAPERWIDTH=2400

  DEFAULTSOURCE=8

  PRINTQUALITY=180

  YRESOLUTION=180

  TTOPTION=1

  其中:

  DEVICE=Epson LQ-1600K 表示系統(tǒng)默認打印機類型為Epson LQ-1600K

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

  PAPERLENGTH=2800   表示報表設計時紙張長度

  PAPERWIDTH=2400   表示報表設計時紙張寬度

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

  USE xxx.frx IN 0 ALIAS mFrx      &&在空閑工作區(qū)以mFrx別名打開xxx.frx文件

  x=atcline(#39;PAPERSIZE#39;,mFrx.Expr)    &&取得參數PAPERSIZE在Expr字段中的行

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

  mTYPE_2=allt(str(Prtinfo(2)))      &&取得當前打印機默認的紙張類型

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

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

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

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

  use in #39;mFrx#39;              &&關閉xxx.frx文件

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

  report form xxx.frx to printer noconsole

  else

  Messagebox(#39;請設置打印機紙張類型為自定義:長=#39;+mLEN+#39;,寬=#39;+mWIDTH,0+48+0,#39;提示#39;)

  report form xxx.frx to printer prompt

  end

【淺談有關VFP報表打印的問題】相關文章:

幼兒飲食應注意的問題02-19

淺談說課的六要四忌02-19

男人健身時要注意的問題02-19

網絡上癮成兒童首要的問題02-19

關于孩子上戶口的問題范文02-19

離婚孩子的撫養(yǎng)權問題介紹02-19

身體出現問題的8個征兆02-19

關于高速公路開車的常見問題02-19

騎單車時要注意哪些問題02-19

橙子能解決哪些皮膚小問題02-19