首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

VFP报表中的一个有关问题

2012-02-25 
VFP报表中的一个问题我用的是VFP 9.0关于报表中一个问题,现向专家请教.use aaa.frxbrow all这时,显示出一

VFP报表中的一个问题
我用的是VFP 9.0

关于报表中一个问题,现向专家请教.

use aaa.frx
brow all

这时,显示出一个类似自由表的格式.

但我看不懂其中的内容,不知是否有什么资料可以参考?

是不是报表里的所有参数都在这里面?
 
是不是改动这里面的参数,报表也相应调整?

谢谢指教.


[解决办法]
 
实现FOXPRO动态制表的新思路
韦 明、成红 出处:网络

 
【摘 要】 本文在分析Foxpro报表数据库结构的基础上,通过修改Foxpro报表信息库的内容,实现了Foxpro报表的自动生成。
【关键词】 报表,动态报表,Foxpro
  1、引言
   FOXPRO数据库为用户提供了功能强大的“报表设计器”(Report builder),利用“报表设计器”的可视功能,可以方便灵活地制作几乎任意形式的报表,并且可以控制报表的输出、定义报表的页面等。但是这样制作的报表是一个静态的报表,一旦数据库的结构发生变化必须重新修改。而且,每段程序只能适合特定的数据库,有多少报表就要编制多少个报表程序,不但增加了工作量,而且缺乏通用性和灵活性,也不利于程序的维护与扩充。
  那么,我们是否可以在充分利用FOXPRO“报表设计器”的强大控制功能的前提下,设计出通用的动态报表呢?为此,本文进行了较深入的研究,答案是肯定的。
  2、报表的构成
  一般情况下报表包含表头、表体和表尾三部分:
  ·表头:在每页的顶端,显示报表的标题及其它提示信息等;
  ·表体:包含报表的主体,是报表的关键部分,一般有循环数据项构成;

  ·表尾:出现在每页的底端,显示总结、总计、日期等文本信息等。
  3、报表信息库的结构
  我们知道在FOXPRO中,报表的信息是保存在以. FRX为扩展名的数据库文件中(备注文件以. FRT为扩展名),了解报表数据库的结构有助于问题的解决。报表库(.FRX)的库结构及字段含义如下表所示:
  字段名称
  类型
  长度
  小数
  说明
  1 PLATFORM 
  C
  8
  
  操作平台(_DOS或_WINDOWS)
  2 UNIQUEID
  C
  10
  
  唯一标识(当NAME合EXPR都为空时以_RHE开头, 否则以_RNR开头)
  3 TIMESTAMP
  N
  10
  
  时间标签(先后次序)
  4 OBJTYPE
  N
  2
  
  目标类型(1.环境; 2.数据库; 5.文字; 8.变量; 9.TIMESTAMP为空; 23.TIMESTAMP为空) 
  5 OBJCODE
  N
  3
  
  目标代码(1.;4.;7.;53)
  6 NAME
  M
  10
  
  名称(数据库名称)
  7 EXPR
  M
  10
  
  表达式
  8 VPOS
  N
  9
  3
  行座标
  9 HPOS
  N
  9
  3
  列座标
  10 HEIGHT
  N
  9
  3
  高度
  11 WIDTH
  N
  9
  3
  宽度
  12 STYLE
  M
  10
  
  风格(透明,不透明)
  13 PICTURE
  M
  10
  
  格式或OLE文件名称
  14 ORDER
  M
  10
  
  索引排序
  15 UNIQUE
  L
  1
  
  唯一数据库(.F.,.T.,空)
  16 COMMENT
  M
  10
  
  注释
  17 ENVIRON
  L
  1
  
  是否报表运行环境(.T.时)
  18 BOXCHAR
  C
  1
  
  画框字符
  19 FILLCHAR
  C
  1
  
  表达式类型(C,N,D等,文字型的为空)
  20 TAG
  M
  10
  
  (当该记录为记录环境的记录时,该字段储存打印信息等;记录数据库时,储存数据库名称)
  21 TAG2
  M
  10
  
  当该记录为记录环境的记录时,该字段储存打印控制等
  22 PENRED
  N
  5

  前景红
  23 PENGREEN
  N
  5
  
  前景绿
  24 PENBLUE
  N
  5
  
  前景蓝
  25 FILLRED
  N
  5
  
  填充红
  26 FILLGREEN
  N
  5
  
  填充绿
  27 FILLBLUE
  N
  5
  
  填充蓝
  28 PENSIZE
  N
  5
  
  划线宽度
  29 PENPAT
  N
  5

  指定填充图案(0.空;1.实体;2.水平;3.垂线;4.左斜;5右斜;6.交叉;7.斜交叉)
  30 FILLPAT
  N
  5
  
  划线类型(0.无;1.点;2.虚线;3. 虚线-点;4. 虚线-点-点)
  31 FONTFACE
  M
  10

  字体类型
  32 FONTSTYLE
  N
  3
  
  字体风格
  33 FONTSIZE
  N
  3
  
  字体大小
  34 MODE
  N
  3
  
  模式
  35 RULER
  N
  1
  
  标尺(2-默认值,3-象素)
  36 RULERLINES
  N 
  1
  
  标线宽度
  37 GRID
  L
  1
  
  是否显示网格线
  38 GRIDV
  N
  2
  
  垂直网格线刻度
  39 GRIDH 
  N
  2
  
  水平网格线刻度
  40 FLOAT
  L
  1
  
  浮动
  41 STRETCH
  L
  1

  溢出时伸展
  42 STRETCHTOP
  L
  1

  相对于顶端伸展
  43 TOP
  L
  1
  
  相对于顶端固定
  44 BOTTOM
  L
  1

  相对于底端固定
  45 SUPTYPE
  N
  1
  
  控制类型
  46 SUPREST
  N
  1
  
  控制设置
  47 NOREPEAT
  L


  1
  
  每页都打印页标题
  48 RESETRPT
  N
  2
  
  重置报表
  49 PAGEBREAK
  L
  1
  
  每组从新的一页开始
  50 COLBREAK
  L
  1
  
  从新的一列开始
  51 RESETPAGE
  L
  1
  
  每组页号重新从1开始
  52 GENERAL
  N
  3
  
  通用
  53 SPACING
  N
  3
  
  空格
  54 DOUBLE
  L
  1

  是否加倍
  55 SWAPHEADER
  L
  1
  
  头互换
  56 SWAPFOOTER
  L
  1
  
  脚注互换
  57 EJECTBEFOR
  L
  1
  
  打印前走纸
  58 EJECTAFTER
  L
  1
  
  打印后走纸
  59 PLAIN
  L
  1

  指定只在报表开始位置出现页标题
  60 SUMMARY
  L 
  1
  
  是否仅打印总计和分类总计信息
  61 ADDALIAS
  L
  1
  
  是否增加别名
  62 OFFSET
  N
  3

  偏移(0-左;1-右;2-居中)
  63 TOPMARGIN
  N
  3 
  
  上边界高度
  64 BOTMARGIN
  N
  3
  
  下边界高度
  65 TOTALTYPE
  N
  2

  计算类型
  66 RESETTOTAL
  N
  2
  
  重置(1-表尾,2-页尾)
  67 RESOID
  N
  3
  
  源标识
  68 CURPOS
  L
  1
  
  是否显示当前位置
  69 SUPALWAYS
  L
  1
  
  是否打印重复值
  70 SUPOVFLOW
  L
  1
  
  当细节区数据溢出时到新页或新列打印
  71 SUPRPCOL
  N
  1
  
  当此列改变时打印
  72 SUPGROUP
  N
  2
  
  当此组改变时打印
  73 SUPVALCHNG
  L
  1
  
  若空行则删除
  74 SUPEXPR
  M
  10
  
  是否打印控制条件
  
  4、常用控制对象的特征
  报表数据库的字段objtype(对象类型)和objcode(对象代码)的值确定了控制对象的类型。为节省篇幅仅把最常用制表控制对象(文字,直线,表达式等)的特征值列入下表:
  Objtype 
  Objcode
  Offset
  含义
  5
  0
  
  文字
  8
  0
   
  表达式
  6
  0
  1
  直线z(水平线)
  6
  0
  0
  直线(垂直线)
  7
  4
  矩形框(0~99椭圆)
   用于报表布局的控制的特征值列入下表:
  Objtype 
  Objcode
  含义
  9
  0
  页头高度
  9
  1
  页细节高度
  9
  3
  组标头高度
  9
  4
  组细节高度
  9
  5
  组脚注高度
  9
  7
  页脚注高度
  其他常用到的字段有:①水平坐标(Hpos);②宽度(Width);③表达式类型(Fillchar);④字体(Fontface); ⑤对齐方式(Offset)。
  
  5、动态报表的实现
  从数据库中自动读取字段名、类型、宽度,通过修改报表库(.FRX)的内容达到动态制表的目的,其算法设计如下:
  ① 栏目宽度:取栏目标题与表达式宽度的最大者,Wi=MAX(Li,Hi), 其中Wi,Li,Hi分别表示栏目宽度、标题宽度、表达式宽度;
  ②总宽度:Width =
  
  不同的设计人员所采取的方法步骤可能不同,我们仅给出一种设计的思路:
  ① 使用快速报表制作一个简易模板,打开其报表结构库,内容如下图所示。
  ② 分别把“布局部分”、“主体部分”和“环境部分”复制到三个数据表中;
  ③ 从欲打印的数据表中自动读取字段名、类型、宽度,根据以上提供的算法修改“主体部分”数据表的相应的字段内容;
  ④ 使用APPEND FROM 命令重新把“布局部分”、“主体部分”和“环境部分”三个数据表连接到一个新的数据表中,该新表为欲打印的数据表的报表数据库;
  ⑤ 使用报表命令,实现的报表控制输出:予览、打印及送入文件。
  6、结束语 
  本文在分析研究FOXPRO报表数据库的基础上,实现了管理信息系统中的通用动态制表问题。利用系统的强大功能,加以扩充生成新功能的设计有助于软件的维护和标准化,利用类似的方法可以实现动态屏幕布局等,该问题将另文介绍。
  由于缺少这方面的资料,不当之处望批评指正。

 

热点排行