Foxtable(狐表)用户栏目专家坐堂 → 专业报表问题,


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

主题:专业报表问题,

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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
专业报表问题,  发帖心情 Post By:2009/5/26 16:51:00 [只看该作者]

 

Dim doc As New Printdoc
Dim
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

获取关联表数据后,我想按某列排序,应怎么样做啊?另我想某列符合条件的,打印时为空白,行吗?


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


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/26 17:06:00 [只看该作者]

我主表的“路名”列、“街名”列、“号码”列、“栋”列与子表的“路名”列、“街名”列、“号码”列、“栋”列关联哦


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


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/26 17:35:00 [只看该作者]

EXECL报表可以设置留空白行,专业报表行吗?怎么样做啊?

 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/26 17:37:00 [只看该作者]

你的意思是自动满页?

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


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/26 17:41:00 [只看该作者]

以下是引用hejfen在2009-5-26 17:35:00的发言:
EXECL报表可以设置留空白行,专业报表行吗?怎么样做啊?


既然是代码,想怎么样都行。


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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/26 18:02:00 [只看该作者]

是的,应怎么样做?

 回到顶部
美女呀,离线,留言给我吧!
yangming
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/27 12:20:00 [只看该作者]

1楼的示例中,如果想加入5行空白行,或自动满页,怎么修改代码啊?

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