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


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

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

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


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

您的代码应该不全吧?

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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) '将表格加入到报表'

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


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

建议看看这个:


 回到顶部