Visual Foxpro通用报表打印程序.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
Visual Foxpro通用报表打印程序.doc

Visual Foxpro通用报表打印程序   数据库报表程序是经常使用的,现在很多用户都使用报表设计器设计报表,且简单方便;但笔者在工作中遇到要对成百个数据库打印的情况,这些数据库除了字段名不相同外,其他结构信息基本相同,因此笔者就编制了如下的一个通用程序,供同行参考。 set talk off hh1=printstatus() set print on do while .not.hh1  ?打印机未准备好,请准备好打印机  hh1=printstatus() enddo set talk off set device to print clear a1=getfile(dbf) 打开打开文件对话框 use a1 打开指定的文件 n1=fcount() 获取打开的库中的字段数 dimension a(n1) 定义一个存放字段名的数组 dimension b(n1) 定义一个存放字段宽度的数组 k=1 do while k=n1  a(k)=field(k)  k=k+1 enddo 将字段名赋给数组 w=1 do while w=n1  b(w)=fsize(a(w)) 获取字段的长度  if b(w)6   b(w)=8  else   b(w)=b(w)+2  endif  w=w+1 enddo do while not eof()  r1=1 显示表头的第一行  m=1  col1=1  do while m=n1   if m=1    @r1,col1 say ┌+replicate(-,b(m))   else    if m=n1     @r1,col1 say ┬+replicate(-,b(m))+┐    else     @r1,col1 say ┬+replicate(-,b(m))    endif   endif   col1=col1+b(m)   m=m+1  enddo m=1 显示字段名行 col1=1 do while m=n1  if m=1   @r1+1,col1 say ∣+substr(a(m),1,6)+replicate( ,(b(m)-len(a(m))))  else   if m=n1    @r1+1,col1 say ∣+substr(a(m),1,6)+replicate( ,(b(m)-len(substr(a(m),1,6))))+∣   else    @r1+1,col1 say ∣+substr(a(m),1,6)+replicate( ,(b(m)-len(substr(a(m),1,6))))   endif  endif  col1=col1+b(m)  m=m+1 enddo m=1 由于字段多,一行不能完全显示整个行,因此分为两行显示字段名行 col1=1 do while m=n1  if m=1   @r1+2,col1 say ∣+substr(a(m),7)  else   if m=n1    @r1+2,col1 say ∣+substr(a(m),7)+replicate( ,(b(m)-len(substr(a(m),7))))+∣   else    @r1+2,col1 say ∣+substr(a(m),7)   endif  endif  col1=col1+b(m)  m=m+1 enddo m=1 显示字段名下面的一行表格线 col1=1 do while m=n1  if m=1   @r1+3,col1 say ├+replicate(-,b(m))  else   if m=n1    @r1+3,col1 say ┼+replicate(-,b(m))+┤   else    @r1+3,col1 say ┼+replicate(-,b(m))   endif  endif  col1=col1+b(m)  m=m+1 enddo row1=r1+4 do while .not.eof() 每页显示20个记录  m=1 显示各记录的值  col1=1  do while m=n1   if type(a(m))=C    if m=1     @row1,col1 say ∣+a(m)    else     if m=n1      @row1,col1 say ∣+alltrim(a(m))+replicate( ,(b(m)-len(alltrim(a(m)))))+∣     else      @row1,col1 say ∣+a(m)     endif    endif   else    if m=1     @row1,col1 say ∣+str(

文档评论(0)

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

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

1亿VIP精品文档

相关文档