以下是引用贺老六在2008-10-6 11:30:00的发言:
文件的报表代码有一些问题,用下面的:
Dim doc As New PrintDoc
Dim tb as Table = Tables("订单")
Dim ColNames As String() = New String(){"产品", "日期", "数量"}
Dim PageRows As integer = 30 '每页打印30行
Dim Pages As Integer = Math.Ceiling(tb.Rows.Count / PageRows) '获得总页数
Dim Sum As Integer
For Page As integer = 0 To Pages -1
Dim StartRow As Integer = Page * PageRows
Dim EndRow As integer = Math.Min((Page + 1) * PageRows - 1,tb.Rows.Count - 1)
Sum = 0
Dim rt As New prt.RenderTable
For c As Integer = 0 To ColNames.Length - 1
rt.Cells(0,c).Text = ColNames(c)
Next
For r As integer = StartRow to EndRow
Sum = Sum + tb.rows(r)("数量")
For c As Integer = 0 To ColNames.Length - 1
rt.Cells(r - StartRow + 1, c).Text = tb.Rows(r)(ColNames(c))
Next
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
doc.Body.Children.Add(rt)
Dim rx As New prt.RenderText
rx.Text = "数量合计: " & Sum
rx.Style.Spacing.Top = 5
If EndRow < tb.Rows.Count - 1 Then
rx.BreakAfter = prt.BreakEnum.Page
End If
doc.Body.Children.Add(rx)
Next
doc.Preview()
试过了,老六一出手,肯定可以实现,但我的意思不是这样。我的建议是,只要点菜单上的打印时,就自动合计当前表的当前视图的每个数值列的页合计和总合计,别让我们再写30多行的代码了,只需要对表增加一项属性“打印时是否打印页合计”就可以了,这样既可以自动实现,也不会影响不需要打印合计的情况!这是很常用、使用频率很高的功能,不应该让每个用户在每次使用时都反复编写这几十行代码,直接加在系统的功能上,您的一次辛苦,方便了所有人,节约了所有人的时间,岂不更好吗?