Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共12 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]报表增加总计栏

1楼
老有所乐 发表于:2011/6/4 8:06:00

 

上述的代码,会打印所有列,包括隐藏列,如果要排除隐藏列,可以采用下面的代码:

Dim doc As New PrintDoc '定义一个新报表
Dim
rt As New prt.RenderTable '定义一个新表
Dim
tb as Table = Tables("订单")
Dim
ColNames As New List(Of String)
For Each
cl As Col In tb.Cols '排除隐藏列
    If
cl.Visible Then
        ColNames
.Add(cl.Name)
    End If
Next

rt
.Width = "Auto" '表格宽度为自动,也就是等于各列设置宽度之和
rt.SplitHorzBehavior = prt.SplitBehaviorEnum.
SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
For
c As Integer = 0 To ColNames.Count - 1 '逐列设置和填入内容
    rt.Cells(0,c).Text = ColNames(c) '列名作为标题
   
rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
   
rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth '列宽等于实际列宽
    If
tb.Cols(ColNames(c)).IsNumeric Orelse tb.Cols(ColNames(c)).IsDate Then '如果是数值或日期列
   
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right '数据水平靠右
    End If
    For
r As integer = 0 To tb.Rows.Count -1 '开始填入该列内容
       
rt.Cells(r + 1, c).Text = tb.Rows(r)(ColNames(c))
    Next
Next

rt
.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt
.CellStyle.Spacing.All = 0.5 '单元格内距设为0.5毫米
rt
.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt
.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头.
doc
.Body.Children.Add(rt) '将表格加入到报表
doc
.Preview()

 

求这个代码生成的报表后,能在这个报表的最后增加一"总计"行,对订单表的"数量"和"金额"列累计,折扣列为平均   的代码  .

谢谢!

 

 

 

2楼
狐狸爸爸 发表于:2011/6/4 8:26:00

Dim cnt As integer  = tb.Rows.Count

tb.Cells(cnt,0) = "总计"

tb.Cells(cnt,1) = DataTables("订单").Compute("Sum(金额)")

3楼
老有所乐 发表于:2011/6/4 13:20:00

谢谢贺老师!

你这段代码应该放在何处合适,我怎么放在任何地方都提示"cells 不是 Table 的成员"

4楼
mr725 发表于:2011/6/4 14:00:00

放在第一个For  。。。。 Next 之后:

Dim cnt As Integer  = tb.Rows.Count
rt.Cells(cnt+1,0).text = "总计"
rt.Cells(cnt+1,1).text = DataTables("订单").Compute("Sum(金额)")

5楼
老有所乐 发表于:2011/6/4 15:31:00

谢谢mr725老师!

这个代码统计的是整个订单表的金额累计,我想只累计不包含隐藏行的金额累计,另外金额累计值不会自动到对应到金额列的最后一行

代码应该怎样写.

[此贴子已经被作者于2011-6-4 16:17:36编辑过]
6楼
mr725 发表于:2011/6/4 16:39:00

1、有隐藏就应该被筛选了,那么 DataTables("订单").Compute("Sum(金额)"," 筛选条件")

2、rt.Cells(cnt+1,tb.cols("金额").index).text = DataTables("订单").Compute("Sum(金额)"," 筛选条件")  这样就会在金额列下面显示合计金额了

 

7楼
老有所乐 发表于:2011/6/4 17:00:00

谢谢mr老师!

我消化一下,筛选代码很长,看怎样加入.

8楼
老有所乐 发表于:2011/6/5 13:43:00

             

怎样限制小数的位数,我在一楼的报表代码加了下面一句,求折扣平均值,有时小数位数有十几位,我试过几种方法都没有成功,应该怎样限制小数为3位.谢谢!

     rt.Cells(cnt2+1,tb.cols("折扣").index).text = Tables("订单").Compute("Avg(折扣) " ).

谢谢

9楼
e-png 发表于:2011/6/5 14:26:00
这样可以吗: rt.Cells(cnt2+1,tb.cols("折扣").index).text = Format(Tables("订单").Compute("Avg(折扣) " ),"0.000")
10楼
老有所乐 发表于:2011/6/5 14:46:00

谢谢e-pnp老师

共12 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02539 s, 2 queries.