Foxtable(狐表)用户栏目专家坐堂 → 专业报表 分组汇总问题


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

主题:专业报表 分组汇总问题

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


加好友 发短信
等级:九尾狐 帖子:2466 积分:22761 威望:0 精华:0 注册:2011/3/29 17:14:00
专业报表 分组汇总问题  发帖心情 Post By:2022/1/5 21:58:00 [只看该作者]

  希望和这页帮助一样的效果   http://www.foxtable.com/webhelp/topics/2239.htm
老师帮我看看哪里有问题

我的汇总全部到了最下面
还有汇总行加上底色 怎么加

Dim tb As Table = Tables("成品报价表")
Dim cnt As Integer
Dim drs As List(Of DataRow)
Dim pds As List(Of String) = tb.DataTable.GetValues("空间",tb.Filter)
For Each pd As String In pds '分产品打印
    If tb.Filter > "" Then
        drs = tb.DataTable.Select("空间 = '" & pd & "' And " & tb.Filter)
    Else
        drs = tb.DataTable.Select("空间 = '" & pd & "'" )
    End If
cnt = rt.Rows.Count '分产品打印标题
    rt.Cells(cnt, 2).Text =  pd & "小计 " '打印产品的小计
    rt.Cells(cnt,8).Text = tb.compute("Sum(金额小计)", "空间 = '" & pd & "'") 

     For c As Integer = 0 To ColNames2.Length - 1 '逐列设置和填入内容
        rt.Cells(0,c).Text = ColNames(c) '列名作为标题
        rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
        If ColNames(c) <> "备注" Then '
            rt.Cols(c).Width = tb.Cols(ColNames2(c)).PrintWidth
        End If
        For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
            If ColNames(c) <>"产品图片      Picture"
                rt.Cells(r + 1, c).Text = tb.Rows(r)(ColNames2(c))
            Else
                Dim name As String = Vars("bdwj") & "家具\" & filesys.getname(tb.Rows(r)("图片"))
                If FileSys.FileExists(name) Then
                Else
                    Network.DownloadFile(tb.Rows(r)("图片"), name)
                End If
                
                rt.Cells(r + 1,2).Image = GetImage(name)
                rt.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '居中显示
            End If
        Next
           Next
    
    rt.Style.GridLines.All = New prt.Linedef '设置网格线
    rt.Cols(0).Width = 12 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
    rt.Cols(1).Width = 20
    rt.Cols(2).Width = 30
    rt.Cols(3).Width = 15
    rt.Cols(4).Width = 28
    rt.Cols(5).Width = 18
    rt.Cols(6).Width = 15
    rt.Cols(7).Width = 10
    rt.Cols(8).Width = 20
    rt.Cols(9).Width = 20
    rt.CellStyle.Spacing.All = 0.5 '内容距离网格线0.5毫米
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中
    'rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
    'rt.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中
    rt.Rows(0).Style.BackColor = Color.LightGray '第一行背景颜色设为灰色.
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '将第一行作为表头..
    Next
doc.Body.Children.Add(rt) '将表格加入到报表'

[此贴子已经被作者于2022/1/5 21:59:10编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107812 积分:548411 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/6 9:08:00 [只看该作者]

这个用法仅适合逐行填充数据,1楼是逐列填充不能这样用。照搬帮助的用法,改为逐行填充

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2022/1/6 16:09:00 [只看该作者]

您的代码应该不全吧?

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2022/1/6 16:51:00 [只看该作者]

大概应该是这样,自己调试:

Dim tb As Table = Tables("成品报价表")
Dim drs As List(Of DataRow)
Dim pds As List(Of String) = tb.DataTable.GetValues("空间",tb.Filter)
Dim s,Filter As String
Dim Values() As String
For c As Integer = 0 To ColNames2.Length - 1 '设置列宽没必要加在循环语句里面
    If ColNames(c) <> "备注" Then '
        rt.Cols(c).Width = tb.Cols(ColNames2(c)).PrintWidth '根据来源table列宽设置,报表可手动调列宽
    End If
Next
For Each pd As String In pds '分产品打印
    If tb.Filter > "" Then
        Filter = "空间 = '" & pd & "' And " & tb.Filter
    Else
        Filter = "空间 = '" & pd & "'"
    End If
    drs = tb.DataTable.Select(Filter)
    rt.Cells(rt.Rows.Count, 2).Text =  pd & "小计 " '打印产品的小计
    rt.Cells(rt.Rows.Count-1,8).Text = tb.compute("Sum(金额小计)", "空间 = '" & pd & "'")
    rt.Cells(rt.Rows.Count-1,3).SpanCols = 5 '合并分组行没有数据的单元格,报表更好看!
    rt.Rows(rt.Rows.Count-1).Style.BackColor = Color.red '第一行背景颜色设为灰色.
    For r As Row In drs '开始填入该列内容
        rt.Cells(rt.Rows.Count,0).Text = "" '自动添加一个空行
        For c As Integer = 0 To ColNames2.Length - 1 '逐列设置和填入内容
            If ColNames(c) <>"产品图片      Picture"
                rt.Cells(rt.Rows.Count-1,c).Text = r(ColNames(c)) '列名作为标题
                If tb.datatable.Cols(ColNames(c)).IsNumeric
                    rt.Cells(rt.Rows.Count-1,c).Style.TextAlignHorz = prt.AlignHorzEnum.Right '数值型内容水平靠右
                Else
                    rt.Cells(rt.Rows.Count-1,c).Style.TextAlignHorz = prt.AlignHorzEnum.Left '内容水平靠左                End If
                End If
            Else
                Dim name As String = Vars("bdwj") & "家具\" & filesys.getname(tb.Rows(r)("图片"))
                If FileSys.FileExists(name) Then
                Else
                    Network.DownloadFile(tb.Rows(r)("图片"), name)
                End If
                rt.Cells(rt.Rows.Count-1,c).Image = GetImage(name)
                rt.Cells(rt.Rows.Count-1,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '居中显示
            End If
        Next
    Next
    's = "12|20|30|15|28|18|15|10|20|20"  '这里设置的列宽会导致前面的列宽失效,建议用前面的,固定列宽用这里.
    'Values = s.split("|")
    'For Index As Integer = 0 To Values.Length - 1
    'rt.Cols(rt.Cols.Count).Width = val(Values(Index) '设置列宽
    'Next
    rt.Style.GridLines.All = New prt.Linedef '设置网格线
    rt.CellStyle.Spacing.All = 0.5 '内容距离网格线0.5毫米
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中
    rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
    rt.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中
    rt.Rows(0).Style.BackColor = Color.LightGray '第一行背景颜色设为灰色.
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '将第一行作为表头..
Next
doc.Body.Children.Add(rt) '将表格加入到报表'

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


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

建议看看这个:


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


加好友 发短信
等级:九尾狐 帖子:2466 积分:22761 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2022/1/10 1:28:00 [只看该作者]

谢谢
[此贴子已经被作者于2022/1/12 11:03:45编辑过]

 回到顶部