Foxtable(狐表)用户栏目专家坐堂 → [求助]报表打印代码慰问


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

主题:[求助]报表打印代码慰问

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


加好友 发短信 小学文化
等级:小狐 帖子:374 积分:2318 威望:0 精华:0 注册:2008/12/6 20:34:00
[求助]报表打印代码慰问  发帖心情 Post By:2010/1/20 22:56:00 [只看该作者]

Dim Arys As List(Of String)
Arys = DataTables("退休慰问费").GetUniqueValues("", "慰问单位")
For Each Ary As String In Arys
With Tables("退休慰问费")
.Filter = "[是否停发] = False"
If .Rows.Count = 0 then
Continue for
End If

.Select(0,0,.Rows.Count -1,.Cols.Count -1)
Dim Book As New XLS.Book(ProjectPath & "Attachments\慰问费.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build()
Book.Save(ProjectPath & "Reports\慰问费.xls")
Dim Proc As New Process
Proc.File = ProjectPath & "Reports\慰问费.xls"
proc.Verb = "Print"
Proc.Start()
End With
Next
Tables("退休慰问费").Filter = ""



求教以上代码为何不能按各单位+各单位人员打印报表?而是所有报表各单位+全体人员打印出来?

另求更完美的代码

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:打印.rar

[此贴子已经被作者于2010-1-20 23:49:32编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/1/20 23:45:00 [只看该作者]

 Tables("退休慰问费").Filter = "[是否停发] = False and [单位] = '" & Ary & "'"

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


加好友 发短信 小学文化
等级:小狐 帖子:374 积分:2318 威望:0 精华:0 注册:2008/12/6 20:34:00
  发帖心情 Post By:2010/1/20 23:54:00 [只看该作者]

以下是引用mr725在2010-1-20 23:45:00的发言:
 Tables("退休慰问费").Filter = "[是否停发] = False and [单位] = '" & Ary & "'"

图片点击可在新窗口打开查看谢谢,说明里没有实例,所以没法真正理解For Each ……Next


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


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

看EXCEL的分组报表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:慰问费.rar

[此贴子已经被作者于2010-1-21 0:48:04编辑过]

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


加好友 发短信 小学文化
等级:小狐 帖子:374 积分:2318 威望:0 精华:0 注册:2008/12/6 20:34:00
  发帖心情 Post By:2010/1/21 9:29:00 [只看该作者]

以下是引用yangming在2010-1-21 0:30:00的发言:
看EXCEL的分组报表
 下载信息  [文件大小:5.0 KB  下载次数:2]
图片点击可在新窗口打开查看点击浏览该文件:慰问费.rar

[此贴子已经被作者于2010-1-21 0:48:04编辑过]

杨版,分组报表简单实用,按钮代码也简单,但在有多地方却不适合

比如我们慰问费里的部门多,人数更多(少的几十、多的上百), 在分组报表里<index> 是整体序号,而非分组序号,这时就不能用<index>(虽然这样的报表本无人数上的错误,可做为财务人员,他们一定会要的,其实对于我们在以后查询也不方便)

[此贴子已经被作者于2010-1-21 9:30:54编辑过]

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


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

使用分组打印前,先对单位进行排序

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


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

专业报表

Tables("退休慰问费").OpenView("1")
Dim doc As New PrintDoc
Dim rt As Prt.RenderTable
Dim rx,rx1,rx2 As prt.RenderText
Dim Agg As New prt.DataBinding.Aggregate("GroupSum")
Dim tbl As Table = Tables("退休慰问费")
Dim ColNames As New List(Of String)
Dim Rows As List(Of DataRow)
Dim Regions As List(Of String) = tbl.DataTable.GetUniqueValues("","慰问单位")
For Each cl As Col In tbl.Cols '排除隐藏列
    If cl.Visible Then
        ColNames.Add(cl.Name)
    End If
Next
For Each Region As String In Regions
    rx1 = New prt.RenderText
    rx1.Style.FontSize = 14
    rx1.Style.FontBold = True
    rx1.Style.Spacing.Bottom = 2
    rx1.Text = "退休慰问费"
    rx1.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    doc.Body.Children.Add(rx1)
    rx = New prt.RenderText
    rx.Style.FontSize = 11
    rx.Style.FontBold = True
    rx.Style.Spacing.Bottom = 2
    rx.Text = "  慰问单位: " & Region & " ".PadLeft(90) & " 单位: 元"
    doc.Body.Children.Add(rx)
    rt = New prt.RenderTable
    rt.Style.Font = Tables("退休慰问费").Font
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
    rt.Style.Spacing.Bottom = 5
    rt.CellStyle.Spacing.All = 1
    rt.Style.Font = tbl.Font
   
    Rows = tbl.Datatable.Select("[是否停发] = False and [慰问单位] = '" & Region & "'")
   
    For c As integer = 0 To ColNames.Count - 1 '逐列设置和填入内容
       
        rt.Cells(0,c).Text = ColNames(c) '列名作为标题
       
        rt.Cols(c).Width = tbl.Cols(ColNames(c)).PrintWidth
        For r As integer = 0 To Rows.Count -1
            rt.Cells(r + 1, c).Text = Rows(r)(ColNames(c))
           
        Next
    Next

    rt.Rows.Count = rt.Rows.Count + 1
    Dim cnt As integer = rt.Rows.Count - 1
    rt.Cells(cnt,0).Text = "总计"
    For c As Integer = 0 To ColNames.Count - 1 '逐列设置和填入内容
        If tbl.Cols(ColNames(c)).IsNumeric then
            rt.Cells(cnt,c).Text = tbl.Compute("Sum("& ColNames(c) & ")","[是否停发] = False and [慰问单位] = '" & Region & "'")
        End If
    Next
    rt.Cells(cnt+1,0).SpanCols = ColNames.Count

        rt.Cells(cnt+1,0).Text = "单位负责人:" & " ".PadLeft(16) & "人事负责人:"& " ".PadLeft(16) & "制表人:"
    rt.Cells(cnt+1,0).Style.GridLines.Bottom = New prt.LineDef(Color.White)
    rt.Cells(cnt+1,0).Style.GridLines.Left = New prt.LineDef(Color.White)
    rt.Cells(cnt+1,0).Style.GridLines.Right = New prt.LineDef(Color.White)
    rt.Rows(cnt+1).Style.Font = New Font("宋体",11, FontStyle.Bold)
        doc.Body.Children.Add(rt)
Next
doc.preview()
Tables("退休慰问费").OpenView("2")

 回到顶部