VisualFoxpro报表打印程序代码

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

数据库报表程序是经常使用的,现在很多用户都使用报表设计器设计报表,且简单方便;但笔者在工作中遇到要对成百个数据库打印的情况,这些数据库除了字段名不相同外,其他结构信息基本相同,因此笔者就编制了如下的一个通用程序,供同行参考。 
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 

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答