浅谈VFP报表打印问痰拟.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈VFP报表打印问痰拟

浅谈VFP报表打印问题 摘要:本文简介了在VFP报表打印时如何解决经常遇到的几个问题。关键字:报表设计器1.如何打印指定的页通常情况下,VFP默认打印当前报表的全部内容,这给使用者带来不便,那么如何实现让系统打印指定范围的内容呢?其实很简单,只需在报表打印语句中加上关于打印范围限制的关键字短语RANGE即可。如:打印报表XXX.FRX的第2至第5页,可使用如下命令REPORT FORM XXX.FRX RANGE 2,5 TO PRINTER为增强该语句功能的灵活性,可引入表示欲打印范围的两个参数x和y,分别代表打印的起始和终止页码,将打印命令改写为REPORT FORM XXX.FRX RANGE x,y TO PRINTER2.如何计算总页数,以实现每页均打印“第x页 共y页”字样VFP系统变量 _PAGENO 可提供当前的打印页号,但却没有能返回总页数的系统变量,若要实现在报表的每一页均打印“第x页 共y页”字样,打印前可根据细节区所打印的记录条数,进行计算,然后再打印,实现方法如下:PUBLIC mPAGE SELE XXX   amp;amp; XXX为欲打印报表的数据源XX=35     amp;amp; XX为每页报表细节区所打印的记录条数mPAGE=IIF(MOD(RECC(),XX)=0,RECC()/XX,INT(RECC()/XX)+1) amp;amp;mPAGE为报表总页数在报表页脚注(或其他合适位置)添加如下信息即可:”第 “+allt(str(_pageno))+” 页 共 “+allt(str(mPAGE))+” 页”3.如何使计算机打印纸张类型适合于所设计报表报表在设计时能够正常打印,可是安装到其他计算机或重装系统后,就会出现“XXX 带区太大不能放入页中”等提示,而且无法正常退出(尤其是对报表设计时采用自定义纸张的程序),这是为什么呢?现作如下解释:我们用报表设计器设计的报表打印程序,保存退出后,磁盘上就会出现 .FRX和.FRT文件,我们的所有设计均保存在这两个文件中。在VFP中 .FRX相当于.DBF表,.FRT相当于.FPT备注型文件,我们用USE XXX.FRX可以象打开.DBF文件一样打开.FRX文件,在.FRX文件中有个Expr备注型字段名,在这个字段名中有如下与打印设置相关的内容(不同设置内容稍有差别): DRIVER=winspoolDEVICE=Epson LQ-1600KOUTPUT=LPT1:ORIENTATION=0PAPERSIZE=256PAPERLENGTH=2800PAPERWIDTH=2400DEFAULTSOURCE=8PRINTQUALITY=180YRESOLUTION=180TTOPTION=1其中:DEVICE=Epson LQ-1600K 表示系统默认打印机类型为Epson LQ-1600KPAPERSIZE=256 该值256表示是自定义纸张(若=9 表示A4纸张、=13表示B5纸张)PAPERLENGTH=2800   表示报表设计时纸张长度PAPERWIDTH=2400  表示报表设计时纸张宽度实际打印时之所以会上述提到的问题,是因为在用户环境中或Windows系统重新安装后,系统一般默认的是A4打印纸,与我们设计时保存在.frx文件里的纸张类型不符,因而造成打印出错。为此,笔者编写了如下一段检测纸张类型的代码,这段代码可以帮助我们很好地解决因纸张类型不符所带来的问题。USE xxx.frx IN 0 ALIAS mFrx     amp;amp;在空闲工作区以mFrx别名打开xxx.frx文件 x=atcline(#39;PAPERSIZE#39;,mFrx.Expr)  amp;amp;取得参数PAPERSIZE在Expr字段中的行 mTYPE_1=subs(mline(mFrx.Expr,x),11) amp;amp;取得设计时保存的纸张类型 mTYPE_2=allt(str(Prtinfo(2)))      amp;amp;取得当前打印机默认的纸张类型 x=atcline(#39;PAPERLENGTH#39;,mFrx.Expr) amp;amp;取得纸张长度在Expr字段中的行 mLEN=subs(mline(mFrx.Expr,x),13)   amp;amp;取得纸张长度x=atcline(#39;PAPERWIDTH#39;,mFrx.Expr)   amp;amp;取得纸张宽度在Expr字段中的行 mWIDTH=subs(mline(mFrx.Expr,x),12) amp;amp;取得纸张宽度 use in #39;mFrx#39;            amp;amp;关闭xxx.frx

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档