论文大宝库 收藏本站 ADD TO MY FAVORITE
设为主页 SET AS MY HOMEPAGE
我要投稿 POST MY ARTICLE
经济财政证券管理会计工商财务公共法学理学医药政治社会文学教育工学计算机艺术哲学文化英语应用文写作指导
搜索论文
搜索论文
最近更新
·DES算法实现过程分析
·测井沉积微相模式识别系统(jsj43)
·杭州建国旅馆前台管理系统(jsj59)
·RSA快速算法的实现(jsj39)
·通用库存信息管理系统(jsj17)
·基于数据仓库技术的购销存信息管理系统...
·基于C++Builder的RSA快速...
·工商银行浙江省分行信贷数据仓库系统的...
·人事管理系统(jsj15)
·医院药品管理系统(jsj22)
热门文章
·在VB6.0数据库程序开发中使用AD...
·《管家婆》软件远程站点版安装中的几个...
·分布式对象技术及其在Web上的应用
·大型ORACLE数据库优化设计方案
·外文书店客户管理系统(jsj115)
·用Visual Basic 6.0实...
·在电子商务中如何正确的使用数据挖掘技术
·Delphi中画布应用两则
·WWW对大量数据查询的一种实现
·通用网页查询函数的设计与应用
 
浅谈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 PRINTER
2.如何计算总页数,以实现每页均打印“第x页 共y页”字样
VFP系统变量 _PAGENO 可提供当前的打印页号,但却没有能返回总页数的系统变量,若要实现在报表的每一页均打印“第x页 共y页”字样,打印前可根据细节区所打印的记录条数,进行计算,然后再打印,实现方法如下:
PUBLIC mPAGE
SELE XXX   && 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备注型文件,我们用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  表示系统默认打印机类型为Epson LQ-1600K
PAPERSIZE=256          该值256表示是自定义纸张(若=9 表示A4纸张、=13表示B5纸张)
PAPERLENGTH=2800    表示报表设计时纸张长度
PAPERWIDTH=2400     表示报表设计时纸张宽度
实际打印时之所以会上述提到的问题,是因为在用户环境中或Windows系统重新安装后,系统一般默认的是A4打印纸,与我们设计时保存在.frx文件里的纸张类型不符,因而造成打印出错。为此,笔者编写了如下一段检测纸张类型的代码,这段代码可以帮助我们很好地解决因纸张类型不符所带来的问题。
USE xxx.frx IN 0 ALIAS mFrx       &&在空闲工作区以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)   &&取得纸张宽度
use in 'mFrx'                &&关闭xxx.frx文件[Page]
if mTYPE_1=mTYPE_2        &&如果相符,则正常打印
 report form xxx.frx to printer noconsole
else
 Messagebox('请设置打印机纸张类型为自定义:长='+mLEN+',宽='+mWIDTH,0+48+0,'提示')
 report form xxx.frx to printer prompt
 end
注:本文中相应命令和程序段均在VFP6.0环境下运行通过。

浅谈VFP报表打印问题
作者:网络文章来源:我们学生网点击数:更新时间:2006-4-27摘要:本文简介了在 VFP报表打印 时如何解决经常遇到的几个 问题 。关键字:报表设计器1.如何打印指定的页通常情况下,VFP默认打印当前报表的全部内容,这给使用者带来不便,...
http://cnkaoyan.net/lwfw/lw/200604/28905.html

浅谈VFP报表打印问题
感谢您选择我站的服务,希望我们的努力能为您的工作带来方便,并让您满意,如果您对本文有任何意见或建议,您记住本文标题: 浅谈VFP报表打印问题 ,并与我们联系,谢谢!您现在的位置:您现在的位置:范文123网>文章中心>论文>计算机...
http://www.zs123.com/Article/ShowArticle.asp?ArticleID=30844

免费论文网, 浅谈vfp报表打印问题 ,免费计算机论文,计算机应用论文...
--> 浅谈vfp报表打印问题 浅谈vfp报表打印问题 摘要:本文简介了在VFP报表打印时如何解决经常遇到的几个问题。关键字:报表设计器1.如何打印指定的页通常情况下,VFP默认打印当前报表的全部内容,这给使用者带来不便,那么如何实现让系统打印...
http://www.novel800.com/P104/D17C2EDA/


| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
Copygight 2005-2006 论文大宝库 粤ICP备06107920号
版权所有:论文大宝库