Foxtable(狐表)用户栏目专家坐堂 → 专业报表设计


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

主题:专业报表设计

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15284 威望:0 精华:0 注册:2015/7/18 10:10:00
专业报表设计  发帖心情 Post By:2016/3/31 22:44:00 [只看该作者]

以下黄色代码怎么修改呀?以下代码分三种情况写标签,一是只有一个子项则把相关信息直接写入标签中;二是无户名无账号的按交易内容分类并写入相应的标签中;三是明细较多则增加附表:
Dim doc As New PrintDoc '定义一个报表
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight '设置排列方式
Dim tb As Table  =Tables("交易汇总")
Dim tb1 As Table  =Tables("交易明细")
Dim lis As List (of String) = tb.DataTable.GetValues("户名","户名 is not null","[_sortkey]")
Dim lis1 As List (of String) = tb1.DataTable.GetValues("交易内容","对方户名 = '无户名无账号'","[_sortkey]")
Dim drs As List(Of DataRow)
For i As Integer = 0 To lis.Count-1
    Dim ra As New prt.RenderArea
    Dim rt As prt.RenderText
    ra.Width = 60 '宽度53毫米
    ra.Height = 15 '高度24毫米
    ra.Style.Spacing.All = 1
    ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) '设置边框
    ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
    drs = tb.DataTable.DataRows(i).GetChildRows("交易明细")
    If drs.Count = 1 Then
        rt = New prt.RenderText
        rt.Text = drs(0)("交易日期")
        rt.X = 2
        rt.Y = 2
        ra.Children.Add(rt)
        rt = New prt.RenderText
        rt.Text = drs(0)("借方金额")/10000 & "万"
        rt.X = 30
        rt.Y = "Prev.top" '垂直坐标位于迁移对象之下的2毫米
        ra.Children.Add(rt)
        
        rt = New prt.RenderText
        rt.Text = drs(0)("对方账号")
        rt.X = 2
        rt.Y = "Prev.Bottom + 2"
        ra.Children.Add(rt)
        
        rt = New prt.RenderText
        rt.Text = drs(0)("对方户名")
        rt.X = 40
        rt.Y = "Prev.Top" '垂直坐标和前一对象相同
        ra.Children.Add(rt)
    ElseIf lis(i) = "无户名无账号" Then
        For n As Integer = 0 To lis1.Count - 1
            rt = New prt.RenderText
            rt.Text = lis1(n)
            rt.X = 2
            rt.Y = 2
            ra.Children.Add(rt)
            
            rt = New prt.RenderText
            rt.Text = tb1.DataTable.Compute("sum(借方金额)","交易内容 = '" & lis1(n) & "'")/10000 & "万"
            rt.X = 30
            rt.Y = "Prev.top" '垂直坐标位于迁移对象之下的2毫米
            ra.Children.Add(rt)
        Next
        
    Else
        rt = New prt.RenderText
        rt.Text = tb(i)("户名")
        rt.X = 2
        rt.Y = 2
        ra.Children.Add(rt)
        
        rt = New prt.RenderText
        rt.Text = tb(i)("银行明细_借方金额")/10000 & "万"
        rt.X = 30
        rt.Y = "Prev.top" '垂直坐标位于迁移对象之下的2毫米
        ra.Children.Add(rt)
        
    End If
Next
doc.PageSetting.Landscape = True
Doc.Preview() '预览报表

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/31 22:46:00 [只看该作者]

 没看懂你什么意思,上传例子说明。

 回到顶部