以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 专业报表问题, (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2923) |
-- 作者:hejfen -- 发布时间:2009/5/26 16:51:00 -- 专业报表问题, Dim doc As New PrintdocDim rx As prt.RenderText Dim rt As prt.RenderTable Dim Rows As List(Of DataRow) Dim tbl As Table = Tables("类别") For i as Integer = tbl.TopRow To tbl.BottomRow rx = New prt.RenderText rx.BreakBefore = prt.BreakEnum.Page \'另起一页再打印 rx.Style.FontSize = 14 rx.Style.FontBold = True rx.Style.Spacing.Bottom = 5 rx.Text = "类别: " & Tables("类别").Rows(i)("类别名称") doc.Body.Children.Add(rx) rt = New prt.RenderTable rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center rt.Style.TextAlignVert = prt.AlignVertEnum.Center rt.Style.Borders.Bottom = New prt.LineDef(0.3,Color.LightGray) rt.CellStyle.Spacing.All = 1 rt.Cols.Count = 4 rt.Cells(0,0).Text = "产品名称" rt.Cells(0,1).Text = "单价" rt.Cells(0,2).Text = "库存量" rt.Cells(0,3).Text = "订购量" rt.Cells(0,4).Text = "再订购量" rt.Cells(0,5).Text = "中止" rt.rows(0).Style.Borders.Top = New prt.LineDef(1,Color.LightGray) rt.rows(0).Style.Borders.Bottom = New prt.LineDef(1,Color.LightGray) Rows = Tables("类别").Rows(i).DataRow.GetChildRows("产品") For r As integer = 0 To Rows.Count - 1 rt.Cells(r+1,0).Text = rows(r)("产品名称") rt.Cells(r+1,1).Text = rows(r)("单价") rt.Cells(r+1,2).Text = rows(r)("库存量") rt.Cells(r+1,3).Text = rows(r)("订购量") rt.Cells(r+1,4).Text = rows(r)("再订购量") If rows(r)("中止") = True Then Dim rm As New prt.RenderImage rm.Image = getImage("Check.Ico") rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center rm.Style.ImageAlign.StretchHorz = False rm.Style.ImageAlign.StretchVert = False rt.Cells(r+1,5).RenderObject = rm End If Next doc.Body.Children.Add(rt) rx = New prt.RenderText rx.Style.FontBold = True rx.Style.Spacing.Top = 3 rx.Text = "产品数目: " & Rows.Count rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right doc.Body.Children.Add(rx) Next doc.Preview 获取关联表数据后,我想按某列排序,应怎么样做啊?另我想某列符合条件的,打印时为空白,行吗? |
-- 作者:狐狸爸爸 -- 发布时间:2009/5/26 16:59:00 -- Rows = Tables("类别").Rows(i).DataRow.GetChildRows("产品") 改为: Rows = DataTables("产品").Select("关联列 = " & Tables("类别").Rows(i)("关联列"), "排序列" ) 如果关联列是字符型,请加上单引号: Rows = DataTables("产品").Select("关联列 = \'" & Tables("类别").Rows(i)("关联列") & "\'", "排序列" ) |
-- 作者:hejfen -- 发布时间:2009/5/26 17:06:00 -- 我主表的“路名”列、“街名”列、“号码”列、“栋”列与子表的“路名”列、“街名”列、“号码”列、“栋”列关联哦 |
-- 作者:狐狸爸爸 -- 发布时间:2009/5/26 17:10:00 -- 一样的道理,代码长点而已: Dim r As Row = Tables("类别").Rows(i) Rows = DataTables("产品").Select("关联列1 = \'" & r("关联列") & "\' And 关联列2 = \'" & r("关联列2") & "\' And 关联列3 = \'" & r("关联列3") & "\'" , "排序列" ) |
-- 作者:hejfen -- 发布时间:2009/5/26 17:35:00 -- EXECL报表可以设置留空白行,专业报表行吗?怎么样做啊? |
-- 作者:yangming -- 发布时间:2009/5/26 17:37:00 -- 你的意思是自动满页? |
-- 作者:狐狸爸爸 -- 发布时间:2009/5/26 17:41:00 -- 以下是引用hejfen在2009-5-26 17:35:00的发言:
EXECL报表可以设置留空白行,专业报表行吗?怎么样做啊?
|
-- 作者:hejfen -- 发布时间:2009/5/26 18:02:00 -- 是的,应怎么样做? |
-- 作者:yangming -- 发布时间:2009/5/26 18:16:00 -- 指定行数和列数 虽然行和列可以自动创建,但是也可以明确指定行数和列数: 示例 Dim doc As New PrintDoc \'定义一个报表Dim rt As New prt.RenderTable() \'定义一个表格对象 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型 rt.Width = 150 \'表宽为150毫米 rt.Height = 150 \'表高为150毫米 rt.Rows.Count = 3 \'设置行数 rt.Cols.Count = 3 \'设置列数 Doc.Preview() \'预览报表 |
-- 作者:hejfen -- 发布时间:2009/5/27 12:20:00 -- 1楼的示例中,如果想加入5行空白行,或自动满页,怎么修改代码啊? |