Foxtable(狐表)用户栏目专家坐堂 → 专业报表如何强制换页?谢谢


  共有17192人关注过本帖树形打印复制链接

主题:专业报表如何强制换页?谢谢

帅哥哟,离线,有人找我吗?
雨中的泪
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 11:53:00 [只看该作者]

就是压缩文件内的这个样子

 回到顶部
帅哥哟,离线,有人找我吗?
雨中的泪
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 11:54:00 [只看该作者]

最好就是在专业报表中加一个生成指定行后强制换页的属性就好了

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/24 12:04:00 [只看该作者]

看不懂你的问题。

 

RenderTable有换页的属性,就自己编码生成一个一个独立RenderTable,每个都设置PageBreak属性,想这么样都行。


 回到顶部
帅哥哟,离线,有人找我吗?
雨中的泪
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 12:46:00 [只看该作者]

Dim rt As New prt.RenderTable() '定义一个表格对象

 rt.Rows.Count = 5 '设置总行数
    rt.Cols.Count = 4 '设置总列数

rt.Rows(3).PageBreak =True

这样是不行的呀


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40574 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/8/24 12:53:00 [只看该作者]

需要注意的是,如果给打印对象指定了坐标位置,那么其BreakAfter和BreakBefore属性是失效的此时为了强制换页,我们可以加入一个RenderEmpty对象,RenderEmpty是一个空对象,不会打印任何内容;设置RenderEmpty对象的BreakAfter或BreakBefore属性,不指定其坐标,加入到报表中,即可实现强制换页、换栏,换行。

示例二

例如下面的代码,由于所有的打印对象都需要指定坐标位置,所以只有通过增加一个RenderEmpty对象来控制换页:

Dim doc As New PrintDoc() '定义一个报表
Dim
rt As prt.RenderText '定义一个文本对象
Dim
rm As prt.RenderEmpty '定一个空对象
For
n As integer =1 To 2
rm = new prt.RenderEmpty
'定义一个新的空对象
rm.BreakBefore = prt.BreakEnum.Page
'打印前换页
doc.Body.Children.Add(rm)
'加入到报表中

For
i AS integer = 1 To 5
rt = New prt.RenderText()
'创建文本对象
rt.Text =
"Hello Foxtable " & i '设置文本对象的内容
rt.Width =
"Auto" '自动设置宽度
rt.X = i *
10 + 20 '指定水平位置
rt.y = i *
10 + 20 '指定垂直位置
rt.Style.Borders.All = New prt.Linedef(
1, Color.Red) '设置边框
doc.Body.Children.Add(rt)
'将文本对象加入到报表
Next
Next

doc.Preview()
'预览

 

 

[此贴子已经被作者于2011-8-24 12:53:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
雨中的泪
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 13:22:00 [只看该作者]

我也想的是加空白对象

 回到顶部
帅哥哟,离线,有人找我吗?
雨中的泪
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 13:22:00 [只看该作者]

Tables("补偿标准").Filter =""   '取消筛选
Tables("征地数据").Filter =""   '取消筛选
Dim Q As  String
Q = e.Form.Controls("项目名称").Value
If Q = "" Then   
MessageBox.Show("你未选择需要生成个人征地数据的项目!!!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
Return       '终止代码的执行
Else
Dim ck As WinForm.ComBoBox = e.Form.Controls("项目名称")
Tables("补偿标准").Filter = "[项目名称] = '" & ck.value & "'"  '筛选出指定项目名称的行
Tables("征地数据").Filter = "[项目名称] = '" & ck.value & "'"  '筛选出指定项目名称的行
With CurrentTable
  .Select(0,0,.rows.count-1,0)
End With
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("征地数据")
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim rt As New prt.RenderTable() '定义一个表格对象
    Dim rx As New prt.RenderText '定义一个文本对象
    Dim ra As New prt.RenderArea '定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
'加入标题
    rx.text = "征地数据公示表"
    rx.Style.FontBold = True '字体加粗
    rx.Style.FontSize = 16 '大体大小为16磅
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
    ra.Children.Add(rx) '加入到容器中
'指定行数?列数?列宽?行高
    rt.Rows.Count = 5 '设置总行数
    rt.Cols.Count = 4 '设置总列数
    rt.Height = 75 '设置表格的高度
       rt.Cols(0).Width = 30
    rt.Cols(1).Width = 30
    rt.Cols(2).Width = 30
    rt.Style.Spacing.Bottom = 20 '和下一个资料卡的距离是20毫米
    rt.Style.GridLines.All = New prt.Linedef '设置网格线
  rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
  rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Cols(3).Width = 30
rt.Cells(0,0).Text= "序号:"
rt.Cells(0,1).Text = rw("序号")
rt.Cells(0,2).Text= "姓名:"
rt.Cells(0,3).Text = rw("姓名")
rt.Cells(1,0).Text= "补偿种类"
rt.Cells(1,1).Text = "补偿数量"
rt.Cells(1,2).Text = "补偿标准"
rt.Cells(1,3).Text = "补偿金额"
rt.Cells(2,0).Text= "稻田"
rt.Cells(3,0).Text= "旱地"
rt.Cells(4,0).Text= "堡坎"
rt.Cells(2,1).Text= rw("征用稻田面积")
rt.Cells(3,1).Text= rw("征用旱地面积")
rt.Cells(4,1).Text= rw("堡坎方量")
Dim tb2 As Table = Tables("补偿标准")
For H As Integer = tb2.TopRow To tb2.BottomRow
Dim rw1 As Row = tb2.Rows(H)
rt.Cells(2,2).Text= rw1( "稻田补偿标准")
rt.Cells(3,2).Text= rw1( "旱地补偿标准")
rt.Cells(4,2).Text= rw1( "堡坎补偿标准")
Dim rm As prt.RenderEmpty '定一个空对象
    rm = new prt.RenderEmpty '定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page '打印前换页
    doc.Body.Children.Add(rm) '加入到报表中
Next
ra.Children.Add(rt) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next
Doc.Preview() '预览报表
End If

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/24 14:19:00 [只看该作者]

你看看我20楼是怎么自动换页的,虽然我的换页条件是:第二列等于"abc",但是你可以改为任何条件啊,条件不是自己定义的吗,条件可以是第三行或其他什么的,你想怎么样的条件都行。

 


 回到顶部
帅哥哟,离线,有人找我吗?
雨中的泪
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/8/24 15:56:00 [只看该作者]

我说的生成的专业报表的第3行,而不是数据表中的第三行

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/24 16:17:00 [只看该作者]

这有差别吗,专业报表的数据来自于数据表,专业报表的第n行,必然来自于数据表的m行.

帖子都三页了,我都还不明白你要的究竟是什么,难道我理解能力有问题?

[此贴子已经被作者于2011-8-24 16:19:43编辑过]

 回到顶部
总数 38 上一页 1 2 3 4 下一页