Foxtable(狐表)用户栏目专家坐堂 → 专业报表内指定单元格的数据来自两张不同的表如何实现?


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

主题:专业报表内指定单元格的数据来自两张不同的表如何实现?

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


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
专业报表内指定单元格的数据来自两张不同的表如何实现?  发帖心情 Post By:2011/7/11 15:40: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 doc As New PrintDoc() '定义一个报表

doc.PageSetting.PaperKind = 93 '纸张类型为16K

doc.PageSetting.Landscape = False '纵向打印

doc.AutoRotate = False '禁止自动旋转打印内容

Doc.PageSetting.LeftMargin = 20 '设置左边距

Doc.PageSetting.RightMargin = 20 '设置右边距

Doc.PageSetting.TopMargin = 20 '设置上边距

Doc.PageSetting.bottomMargin = 12 '设置下边距

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) '加入到容器中

Dim ck As WinForm.ComBoBox = e.Form.Controls("输入单位名称")

Tables("调标表").Filter = "[单位名称] = '" & ck.value & "'"  '筛选出指定单位名称的行

'指定行数、列数、列宽、行高
    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.Cols(3).Width = 30

rt.Cells(0,0).Text= "序号"

rt.Cells(0,1).Text = Tables("征地数据").rw("序号")

rt.Cells(0,2).Text= "姓名"

rt.Cells(0,3).Text = Tables("征地数据").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(2,1).Text= Tables("征地数据").rw("征用稻田面积")

rt.Cells(2,2).Text= Tables("补偿标准").rw( "稻田补偿标准")

rt.Cells(3,0).Text= "旱地"

rt.Cells(3,1).Text= Tables("征地数据").rw("征用旱地面积")

rt.Cells(3,2).Text= Tables("补偿标准").rw( "旱地补偿标准")

rt.Cells(4,0).Text= "堡坎"

rt.Cells(4,1).Text= Tables("征地数据").rw("堡坎方量")

rt.Cells(4,2).Text= Tables("补偿标准").rw( "堡坎补偿标准")

ra.Children.Add(rt) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next

end if

Doc.Preview() '预览报表



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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


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

先通过“项目名称”-“选择项目窗口”筛选数据,然后根据“补偿标准”表(筛选后只有一行)、“征地数据”表(筛选后只用一个项目的多行)生成公示表

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


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

rt.Cells(0,1).Text = Tables("征地数据").rw("序号")

这样不行呀

 


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


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

以下是引用雨中的泪在2011-7-11 15:53:00的发言:

rt.Cells(0,1).Text = Tables("征地数据").rw("序号")

这样不行呀

 

 

问一下:这个rw是什么东西?

 

应该是这样的吧:

 

rt.Cells(0,1).Text = rw("序号")

 

都五尾了,怎么还能写出这样的代码?


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


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

忘记了

 


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


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/7/11 17:00: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 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) '加入到容器中

Dim ck As WinForm.ComBoBox = e.Form.Controls("输入单位名称")

Tables("调标表").Filter = "[单位名称] = '" & ck.value & "'"  '筛选出指定单位名称的行

'指定行数、列数、列宽、行高
    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.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( "堡坎补偿标准")

next

ra.Children.Add(rt) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next

end if

Doc.Preview() '预览报表



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


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

这样改也不行呀

 


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


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

这样改也只打印一行,不能批量答应
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2011/7/11 17:48:00 [只看该作者]

以下是引用雨中的泪在2011-7-11 17:29:00的发言:
这样改也只打印一行,不能批量答应
不就是For Each 嘛?


 回到顶部
总数 13 1 2 下一页