fastreport数据重复

lyguo 2004-11-23 10:39:07
我用直接将MEMO.text赋给报表的RICHTEXT 
报表上用BAND+RICHTEXT 因Memo.text值太长,可能有三页以上,故将BAND+RICHTEXT设成自动延长
但现在却把MEMO.text的内容重复十几次打印输出。数据集设为虚拟数据集,记录数1
什么地方设错啦?
...全文
433 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyguo 2005-01-23
  • 打赏
  • 举报
回复
bands分隔
当打印一个FastReport的band时,如果在页面上有空间,但空间不够,它将生成新的页面并打印在上面。而且页面空间没有用尽,尤其在band的高度非常大的情况下。



为了在页面上打印多行文本,band不必激活“伸展”选项,但必须激活“分隔”。之后报表大概是这个样子:



如果报表是多栏的,对象中的内容将延续到下一栏:



“Text”,“RoundRect”和“RichText”对象能够分隔内容。其它所有对象当没有足够空间时将输出到下一页。
lyguo 2005-01-23
  • 打赏
  • 举报
回复
问题我自己解决啦,解啦
longtusoft 2004-12-17
  • 打赏
  • 举报
回复
顶啊
bmwyc 2004-12-17
  • 打赏
  • 举报
回复
up
lyguo 2004-12-16
  • 打赏
  • 举报
回复
记当数为1啊,数据库中就没有别的数据,虚拟数据集也设置为1啦
我又回来啦 2004-11-25
  • 打赏
  • 举报
回复
这个问题好像是记录数不为1的时候造成的吧,你也可以试着测试打印仅仅一行数据的报表看看,是不是这个样子、
lyguo 2004-11-23
  • 打赏
  • 举报
回复
这应该与数据库没有关系了吧,数据库中我也看了,确实有一条记录,而且我是把它给MEMOTEXT又反给报表的啊,
trainbox 2004-11-23
  • 打赏
  • 举报
回复
确认记录数为1?
whythinkwhy 2004-11-23
  • 打赏
  • 举报
回复
memo.text得的值要一行一行的赋值 语句:memo.lines.... 可以使用循环
:首先是要分组,因为如果不分组,想合并的列与其它列会自动打印。这样,只能使用FR自带的隐藏重复数据的功能,但很多类似报表都是要求合并行居中的,这点FR就不能自动实现了。 2:要全并的列放在分组脚中,其它放在分组数据BAND中,这样,打印完分组数据BAND后,动态改变分组脚中要合并列的TOP和HEIGHT就可以了。而且这样打印,因为要合并的行实际上只打印了一遍,因此应该效率更高。所以这就需要在打印分组数据BAND后有一个可记录此分组已打印高度的功能。 3:代码解释 procedure MCOnAfterData(Sender: TfrxComponent); begin if =1 then MC.Tag:=Int(MC.Height) else MC.Tag:=MC.Tag+Int(MC.Height); end; 因为FR的在每次分组后重新计数,使用MC.Tag保存现在数据BAND上的所有不合并行的总高度。当然也可以使用一个变量,但放着这么多TAG不用,多浪费呀。况且使用TAG的语法也比使用变量简单,使用变量使程序看上去很难懂。 if >=1 then 这样的写法看起来多痛苦呀。 procedure MBBOnAfterData(Sender: TfrxComponent); begin MBB.Tag:=GetStandHeight(MBB.CalcHeight); //这一句是为了保持行高的一致性,如果不需要直接 MBB.Tag:=MBB.CalcHeight; //这样可能计算的行高不是标准行高的整数倍。 MBB.Visible:=False; end; procedure MD1OnBeforePrint(Sender: TfrxComponent); begin if =1 then MBB.Visible:=True; end; 上二句只是为了不多次统计CalcHeight,但不能直接设可视性为假,否则不会触发MBBOnAfterData事件。 计算此例中可能会很高的列的计算高度,这是在宽度已经确定的情况下计算的。 因为此例中的第二列单行高度可能大于其它列的总高度。如果没有此例中的特殊情况,可以省略。 4:如果此例中没有第二列单行高度可能大于其它列的总高度的话,MBB是不需要的。 5:如果不是要求空行为多行多列显示的话,GFOnBeforePrint也是不需要的,只需要在GF上放二个MEMOVIEW,宽高和左边距分别与上方的二个相同,调用我例子中注释掉的代码改变它们的TOP和HEIGHT即可。 6:TAG是所有Tcomponent的属性呀,这是我最常使用的一个属性。
字段名称 类型 长度 小数 说明   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 是否打印控制条件   ==============================   Objtype Objcode Offset 含义   5 0 文字   8 0 表达式   6 0 1 直线(水平线)   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,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧