以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  专业报表内指定单元格的数据来自两张不同的表如何实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11169)

--  作者:雨中的泪
--  发布时间: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() \'预览报表



--  作者:雨中的泪
--  发布时间:2011/7/11 15:41:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:雨中的泪
--  发布时间:2011/7/11 15:50:00
--  
先通过“项目名称”-“选择项目窗口”筛选数据,然后根据“补偿标准”表(筛选后只有一行)、“征地数据”表(筛选后只用一个项目的多行)生成公示表
--  作者:雨中的泪
--  发布时间:2011/7/11 15:53:00
--  

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

这样不行呀

 


--  作者:狐狸爸爸
--  发布时间: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("序号")

 

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


--  作者:雨中的泪
--  发布时间:2011/7/11 16:59:00
--  

忘记了

 


--  作者:雨中的泪
--  发布时间: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() \'预览报表



--  作者:雨中的泪
--  发布时间:2011/7/11 17:01:00
--  

这样改也不行呀

 


--  作者:雨中的泪
--  发布时间:2011/7/11 17:29:00
--  
这样改也只打印一行,不能批量答应
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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