国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
淺談VFP報(bào)表打印問(wèn)題
如何打印指定的頁(yè)
 通常情況下,VFP默認(rèn)打印當(dāng)前報(bào)表的全部?jī)?nèi)容,這給使用者帶來(lái)不便,那么如何實(shí)現(xiàn)讓系統(tǒng)打印指定范圍的內(nèi)容呢?其實(shí)很簡(jiǎn)單,只需在報(bào)表打印語(yǔ)句中加上關(guān)于打印范圍限制的關(guān)鍵字短語(yǔ)RANGE即可。如:打印報(bào)表XXX.FRX的第2至第5頁(yè),可使用如下命令
REPORT FORM XXX.FRX RANGE 2,5 TO PRINTER
為增強(qiáng)該語(yǔ)句功能的靈活性,可引入表示欲打印范圍的兩個(gè)參數(shù)x和y,分別代表打印的起始和終止頁(yè)碼,將打印命令改寫(xiě)為
REPORT FORM XXX.FRX RANGE x,y TO PRINTER
2.如何計(jì)算總頁(yè)數(shù),以實(shí)現(xiàn)每頁(yè)均打印“第x頁(yè) 共y頁(yè)”字樣
VFP系統(tǒng)變量 _PAGENO 可提供當(dāng)前的打印頁(yè)號(hào),但卻沒(méi)有能返回總頁(yè)數(shù)的系統(tǒng)變量,若要實(shí)現(xiàn)在報(bào)表的每一頁(yè)均打印“第x頁(yè) 共y頁(yè)”字樣,打印前可根據(jù)細(xì)節(jié)區(qū)所打印的記錄條數(shù),進(jìn)行計(jì)算,然后再打印,實(shí)現(xiàn)方法如下:
PUBLIC mPAGE
SELE XXX   && XXX為欲打印報(bào)表的數(shù)據(jù)源
XX=35     && XX為每頁(yè)報(bào)表細(xì)節(jié)區(qū)所打印的記錄條數(shù)
mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1)  &&mPAGE為報(bào)表總頁(yè)數(shù)
在報(bào)表頁(yè)腳注(或其他合適位置)添加如下信息即可:
"第 "+allt(str(_pageno))+" 頁(yè)   共 "+allt(str(mPAGE))+" 頁(yè)"
3.如何使計(jì)算機(jī)打印紙張類(lèi)型適合于所設(shè)計(jì)報(bào)表
報(bào)表在設(shè)計(jì)時(shí)能夠正常打印,可是安裝到其他計(jì)算機(jī)或重裝系統(tǒng)后,就會(huì)出現(xiàn)“XXX 帶區(qū)太大不能放入頁(yè)中”等提示,而且無(wú)法正常退出(尤其是對(duì)報(bào)表設(shè)計(jì)時(shí)采用自定義紙張的程序),這是為什么呢?現(xiàn)作如下解釋?zhuān)?br>我們用報(bào)表設(shè)計(jì)器設(shè)計(jì)的報(bào)表打印程序,保存退出后,磁盤(pán)上就會(huì)出現(xiàn) .FRX和.FRT文件,我們的所有設(shè)計(jì)均保存在這兩個(gè)文件中。在VFP中 .FRX相當(dāng)于.DBF表,.FRT相當(dāng)于.FPT備注型文件,我們用USE XXX.FRX可以象打開(kāi).DBF文件一樣打開(kāi).FRX文件,在.FRX文件中有個(gè)Expr備注型字段名,在這個(gè)字段名中有如下與打印設(shè)置相關(guān)的內(nèi)容(不同設(shè)置內(nèi)容稍有差別):
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)默認(rèn)打印機(jī)類(lèi)型為Epson LQ-1600K
PAPERSIZE=256          該值256表示是自定義紙張(若=9 表示A4紙張、=13表示B5紙張)
PAPERLENGTH=2800    表示報(bào)表設(shè)計(jì)時(shí)紙張長(zhǎng)度
PAPERWIDTH=2400     表示報(bào)表設(shè)計(jì)時(shí)紙張寬度
實(shí)際打印時(shí)之所以會(huì)上述提到的問(wèn)題,是因?yàn)樵谟脩?hù)環(huán)境中或Windows系統(tǒng)重新安裝后,系統(tǒng)一般默認(rèn)的是A4打印紙,與我們?cè)O(shè)計(jì)時(shí)保存在.frx文件里的紙張類(lèi)型不符,因而造成打印出錯(cuò)。為此,筆者編寫(xiě)了如下一段檢測(cè)紙張類(lèi)型的代碼,這段代碼可以幫助我們很好地解決因紙張類(lèi)型不符所帶來(lái)的問(wèn)題。
USE xxx.frx IN 0 ALIAS mFrx       &&在空閑工作區(qū)以mFrx別名打開(kāi)xxx.frx文件
x=atcline('PAPERSIZE',mFrx.Expr)      &&取得參數(shù)PAPERSIZE在Expr字段中的行
mTYPE_1=subs(mline(mFrx.Expr,x),11)   &&取得設(shè)計(jì)時(shí)保存的紙張類(lèi)型
mTYPE_2=allt(str(Prtinfo(2)))       &&取得當(dāng)前打印機(jī)默認(rèn)的紙張類(lèi)型
x=atcline('PAPERLENGTH',mFrx.Expr)   &&取得紙張長(zhǎng)度在Expr字段中的行
mLEN=subs(mline(mFrx.Expr,x),13)     &&取得紙張長(zhǎng)度
x=atcline('PAPERWIDTH',mFrx.Expr)   &&取得紙張寬度在Expr字段中的行
mWIDTH=subs(mline(mFrx.Expr,x),12)   &&取得紙張寬度
use in 'mFrx'                &&關(guān)閉xxx.frx文件
淺談vfp報(bào)表打印問(wèn)題    
if mTYPE_1=mTYPE_2        &&如果相符,則正常打印
report form xxx.frx to printer noconsole
else
Messagebox('請(qǐng)?jiān)O(shè)置打印機(jī)紙張類(lèi)型為自定義:長(zhǎng)='+mLEN+',寬='+mWIDTH,0+48+0,'提示')
report form xxx.frx to printer prompt
end
注:本文中相應(yīng)命令和程序段均在VFP6.0環(huán)境下運(yùn)行通過(guò)。
 
一個(gè)簡(jiǎn)易動(dòng)態(tài)報(bào)表函數(shù)

*功能:根據(jù)當(dāng)前工作區(qū)的表生成報(bào)表文件
*調(diào)用方法:DYNAMICREPORT([[<報(bào)表文件名>],[<報(bào)表標(biāo)題>]])
*使用舉例:
*USE MYTABLE
*DYNAMICREPORT('MYREPORT','我的動(dòng)態(tài)報(bào)表')
*REPO FORM MYREPORT ......
*或:
*SELE ...... FROM MYTABLE INTO CURS TMP
*DYNAMICREPORT(,'我的動(dòng)態(tài)報(bào)表')
*REPO FORM TMP_REPORT ......

PARAMETERS 報(bào)表文件名,報(bào)表標(biāo)題   &&報(bào)表文件名不帶擴(kuò)展名,可缺省(缺省文件名為T(mén)MP_REPORT),報(bào)表標(biāo)題可缺省
PRIVATE ALL LIKE L_*
WAIT '正在生成報(bào)表......' WINDOW NOWAIT NOCLEAR
IF TYPE('M.報(bào)表文件名')='L' OR EMPTY(M.報(bào)表文件名)
   報(bào)表文件名='TMP_REPORT'
ENDIF
L_字符寬度9=625   &&FONTSIZE=9
L_字符寬度9粗=729.167   &&FONTSIZE=9,粗體
L_字符寬度16=1250   &&FONTSIZE=16(半角字符寬度為1250,半個(gè)全角字符寬度為1145.833,故由此算得標(biāo)題居中位置并不準(zhǔn)確)
L_域控件寬度修正9=370   &&由“L_字符寬度9”算得域控件寬度需加上此數(shù)值,才能完整輸出
L_帶區(qū)指示條高度=2083
L_標(biāo)題區(qū)高度=IIF(TYPE('M.報(bào)表標(biāo)題')='L' OR EMPTY(報(bào)表標(biāo)題),0,5000)
L_頁(yè)標(biāo)頭區(qū)高度=2400
L_細(xì)節(jié)區(qū)高度=2400
L_頁(yè)標(biāo)頭區(qū)VPOS=L_標(biāo)題區(qū)高度+IIF(L_標(biāo)題區(qū)高度=0,0,L_帶區(qū)指示條高度)
L_細(xì)節(jié)區(qū)VPOS=L_標(biāo)題區(qū)高度+L_頁(yè)標(biāo)頭區(qū)高度+IIF(L_標(biāo)題區(qū)高度=0,1,2)*L_帶區(qū)指示條高度
L_TMP=SYS(2015)
L_CA=SELECT()
COPY STRUCTURE TO (L_TMP) EXTE

CREATE CURSOR TMP (TMPFIELD C(1))
CREATE REPORT (報(bào)表文件名) FROM TMP
USE 報(bào)表文件名+'.FRX' EXCL

IF L_標(biāo)題區(qū)高度#0
   *添加標(biāo)題區(qū)
   INSERT BLAN
   REPLACE PLATFORM WITH 'WINDOWS',OBJTYPE WITH 9,HEIGHT WITH L_標(biāo)題區(qū)高度
ENDIF

LOCATE FOR EXPR='_PAGENO'
L_頁(yè)面寬度=HPOS+WIDTH

*增高頁(yè)標(biāo)頭區(qū)
LOCATE FOR OBJTYPE=9 AND OBJCODE=1
L_頁(yè)標(biāo)頭區(qū)原高度=HEIGHT
L_頁(yè)標(biāo)頭區(qū)增高=L_頁(yè)標(biāo)頭區(qū)高度-HEIGHT
REPLACE HEIGHT WITH L_頁(yè)標(biāo)頭區(qū)高度
*增高細(xì)節(jié)區(qū)
LOCATE FOR OBJTYPE=9 AND OBJCODE=4
L_細(xì)節(jié)區(qū)原高度=HEIGHT
L_細(xì)節(jié)區(qū)增高=L_細(xì)節(jié)區(qū)高度-HEIGHT
REPLACE HEIGHT WITH L_細(xì)節(jié)區(qū)高度

*標(biāo)題區(qū)以下內(nèi)容重定位
LOCATE FOR OBJTYPE=5
L_列標(biāo)題高度=HEIGHT
*修改頁(yè)注腳區(qū)內(nèi)容垂直位置
REPLACE VPOS WITH L_細(xì)節(jié)區(qū)VPOS+L_細(xì)節(jié)區(qū)高度+L_帶區(qū)指示條高度;
FOR VPOS>L_頁(yè)標(biāo)頭區(qū)原高度+L_帶區(qū)指示條高度+L_細(xì)節(jié)區(qū)原高度 AND INLIST(OBJTYPE,5,8)
*修改細(xì)節(jié)區(qū)內(nèi)容垂直位置
REPLACE VPOS WITH L_細(xì)節(jié)區(qū)VPOS+L_細(xì)節(jié)區(qū)增高/2;
FOR BETWEEN(VPOS,L_頁(yè)標(biāo)頭區(qū)原高度,L_頁(yè)標(biāo)頭區(qū)原高度+L_帶區(qū)指示條高度+L_細(xì)節(jié)區(qū)原高度)
*修改頁(yè)標(biāo)頭區(qū)內(nèi)容垂直位置
REPLACE VPOS WITH L_頁(yè)標(biāo)頭區(qū)VPOS+L_頁(yè)標(biāo)頭區(qū)增高/2;
FOR VPOS<L_頁(yè)標(biāo)頭區(qū)原高度 AND !INLIST(OBJTYPE,1,9)

*修改頁(yè)注腳內(nèi)容
CALCULATE MAX(HPOS) TO L_MAX FOR OBJTYPE=5 AND TOP
LOCATE FOR HPOS=L_MAX
SCATTER MEMV MEMO
REPLACE EXPR WITH ["第"],HPOS WITH L_頁(yè)面寬度-10*L_字符寬度9,WIDTH WITH 2*L_字符寬度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["頁(yè)"],HPOS WITH L_頁(yè)面寬度-2*L_字符寬度9,WIDTH WITH 2*L_字符寬度9
LOCATE FOR EXPR=[_PAGENO] AND TOP
REPLACE HPOS WITH L_頁(yè)面寬度-8*L_字符寬度9,WIDTH WITH 5*L_字符寬度9
LOCATE FOR EXPR=[DATE()] AND TOP
REPLACE HPOS WITH HPOS+11*L_字符寬度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["打印日期:"],HPOS WITH 0,WIDTH WITH 10*L_字符寬度9

*添加列標(biāo)題標(biāo)簽控件、細(xì)節(jié)區(qū)域控件以及表格線(xiàn)
*先保存報(bào)表中基于TMPFIELD字段的標(biāo)簽控件和域控件記錄,作為生成各列的標(biāo)題標(biāo)簽控件和細(xì)節(jié)域控件的依據(jù)
LOCATE FOR UPPER(EXPR)=["TMPFIELD"]
SCATTER TO L_列標(biāo)題記錄 MEMO
DELETE
LOCATE FOR UPPER(EXPR)=[TMPFIELD]
SCATTER TO L_列細(xì)節(jié)記錄 MEMO
DELETE
PACK
SELECT 0
USE (L_TMP)
L_報(bào)表寬度=0
L_HPOS=0
L_GAP=400   &&列與縱線(xiàn)之間的間隙
*設(shè)置縱線(xiàn)屬性
OBJTYPE=6
EXPR=''
WIDTH=104.167
HEIGHT=L_細(xì)節(jié)區(qū)高度
PENSIZE=1
PENPAT=8
MODE=0

SCAN FOR FIELD_TYPE#'G'   &&通用字段除外
   L_列標(biāo)題=TRIM(FIELD_NAME)
   L_列標(biāo)題寬=LEN(L_列標(biāo)題)*L_字符寬度9粗
   L_列細(xì)節(jié)寬=FIELD_LEN*L_字符寬度9+L_域控件寬度修正9
   L_列寬=MAX(L_列標(biāo)題寬,L_列細(xì)節(jié)寬)
   L_報(bào)表寬度=L_報(bào)表寬度+WIDTH+2*L_GAP+L_列寬
   L_類(lèi)型=FIELD_TYPE
   IF L_報(bào)表寬度>L_頁(yè)面寬度
     EXIT
   ENDIF
   SELECT (報(bào)表文件名)
   添加縱線(xiàn)()
   L_HPOS=L_HPOS+WIDTH+L_GAP
   *添加列標(biāo)題
   APPEND BLANK
   GATHER FROM L_列標(biāo)題記錄 MEMO
   REPLACE EXPR WITH ["]+L_列標(biāo)題+["],HPOS WITH L_HPOS,WIDTH WITH L_列標(biāo)題寬
   *添加列細(xì)節(jié)
   APPEND BLANK
   GATHER FROM L_列細(xì)節(jié)記錄 MEMO
   REPLACE EXPR WITH L_列標(biāo)題,HPOS WITH L_HPOS,WIDTH WITH L_列細(xì)節(jié)寬,FILLCHAR WITH CHRTRAN(L_類(lèi)型,'YFTBIM','NNDNNC')
   IF FILLCHAR='N'
     REPLACE OFFSET WITH 1
   ENDIF
   L_HPOS=L_HPOS+L_列寬+L_GAP
   SELECT (L_TMP)
ENDSCAN
USE
SELECT (報(bào)表文件名)
添加縱線(xiàn)()
L_報(bào)表寬度=L_HPOS+WIDTH

*添加橫線(xiàn)
HPOS=0
HEIGHT=104.167
WIDTH=L_報(bào)表寬度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁(yè)標(biāo)頭區(qū)VPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁(yè)標(biāo)頭區(qū)VPOS+L_頁(yè)標(biāo)頭區(qū)高度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_細(xì)節(jié)區(qū)VPOS+L_細(xì)節(jié)區(qū)高度

IF L_標(biāo)題區(qū)高度#0
   *拷貝一個(gè)標(biāo)簽記錄并改造成報(bào)表標(biāo)題記錄
   LOCATE FOR OBJTYPE=5
   SCATTER MEMV MEMO
   L_標(biāo)題寬度=LEN(M.報(bào)表標(biāo)題)*L_字符寬度16
   EXPR=["]+M.報(bào)表標(biāo)題+["]
   VPOS=1000
   HPOS=MAX(0,(L_報(bào)表寬度-L_標(biāo)題寬度)/2)
   WIDTH=L_標(biāo)題寬度
   HEIGHT=2500
   FONTSIZE=16
   APPEND BLANK
   GATHER MEMV MEMO
ENDIF

USE
SELECT (L_CA)
ERASE L_TMP+'.*'
WAIT CLEA
RETURN

PROCEDURE 添加縱線(xiàn)
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁(yè)標(biāo)頭區(qū)VPOS,HPOS WITH L_HPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_細(xì)節(jié)區(qū)VPOS,HPOS WITH L_HPOS,STRETCH WITH .T.
RETURN
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VFP動(dòng)態(tài)定位打印表格
用Excel打印報(bào)表怎樣設(shè)置重復(fù)表頭
編程入門(mén)網(wǎng)-對(duì)報(bào)表.FRX文件的分析
VFP中動(dòng)態(tài)結(jié)構(gòu)數(shù)據(jù)報(bào)表的調(diào)控技術(shù)實(shí)現(xiàn)
課時(shí)102報(bào)表打印 之 更多打印需求
excel財(cái)務(wù)會(huì)計(jì)報(bào)表模板-3
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服