以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:Excel报表中的总计代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2610)

--  作者:yangming
--  发布时间:2009/4/27 20:25:00
--  请教:Excel报表中的总计代码

这是我的代码,意思是在表格的最后一行,逐列求和,请教,红色行错在何处?

For c As Integer = 5 To dt.Cols.Count -2 \'
    Sheet(r1+1, c).Value = dt.Compute("Sum("& c &")")

    Sheet(r1+1, c).Style= Style
Next

 


--  作者:菜鸟foxtable
--  发布时间:2009/4/27 21:29:00
--  
以下是引用yangming在2009-4-27 20:25:00的发言:

这是我的代码,意思是在表格的最后一行,逐列求和,请教,红色行错在何处?

For c As Integer = 5 To dt.Cols.Count -2 \'
    Sheet(r1+1, c).Value = dt.Compute("Sum("& c &")")

    Sheet(r1+1, c).Style= Style
Next

 

dt.Compute("Sum("& c &")")这个不对吧....c只是整数变量,而不是某列列名....

我的代码..
rt.Cells(tbl.Rows.Count,9).Text = tbl.compute("SUM(金额)","[床位] = \'" & Region & "\'")

你的代码可能应该是这样.

For c As Integer = 5 To dt.Cols.Count -2 \'
    Sheet(r1+1, c).Value = dt.Compute("Sum(dt.Cols(c).Name)")

    Sheet(r1+1, c).Style= Style
Next

 


 

[此贴子已经被作者于2009-4-27 21:43:14编辑过]

--  作者:yangming
--  发布时间:2009/4/27 21:44:00
--  

你的方法我试过的,还是出错,不过还是要谢谢你啊

[此贴子已经被作者于2009-4-27 21:47:52编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/4/27 21:47:00
--  
这个不行吗?EXCEL报表我没怎么研究.....但是SUM这个括号里的内容应该是出错的原因..
For c As Integer = 5 To dt.Cols.Count -2 \'
    Sheet(r1+1, c).Value = dt.Compute("Sum(dt.Cols(c).Name)")

    Sheet(r1+1, c).Style= Style
Next

Compute

根据条件统计表中数据。

语法:

Compute(Expression, Filter)

Expression: 要计算的表达式
Filter:    可选参数,用于设置计算条件


计算产品PD01的销售数量:

Dim Total As Long
Total =
DataTables("订单").Compute("Sum(数量)", "产品 = \'PD01\'"
)
Output.Show(Total)


-------------------------------------------------------------------------------

通过Name属性和Index属性,我们可以获得指定名称列的位置,也可以获得指定位置列的名称:

例如:

Output.Show("金额列的位置是:" & Tables("订单").Cols("金额").Index)
Output.Show(
"第三列的名称是:" & Tables("订单").Cols(2).Name)

[此贴子已经被作者于2009-4-27 21:55:55编辑过]

--  作者:yangming
--  发布时间:2009/4/27 22:33:00
--  
如果只是计算一个数量列,而又没有条件,就用:Total = DataTables("订单").Compute("Sum(数量)"),我是要逐列求和,就不明白如何做了

--  作者:ybtxdz
--  发布时间:2009/4/28 0:11:00
--  
试试

Sheet(r1+1, c).Value = dt.Compute("Sum(" & Tables("表名").Cols(c).Name & ")")
--  作者:yangming
--  发布时间:2009/4/28 0:39:00
--  
谢谢ybtxdz,我不明白,这里为何要加表名呢?
--  作者:yangming
--  发布时间:2009/4/28 1:05:00
--  
谢谢ybtxdz,我只是不明白,这里为何要加入表名呢?
--  作者:ybtxdz
--  发布时间:2009/4/28 1:29:00
--  

首先Sum聚合函数的计算需要给出列的名称

你定义的的dt 可能是DataTable,  目前狐表DataTable不直接支持由列的编号得到列的名称

而通过Table 的Cols 可以由列的编号得到列的名称.  用Tables的时候当然就要指定表名.  如果是对当前表进行统计,  你还可以用CurrentTable,  就省了表名.

Sheet(r1+1, c).Value = dt.Compute("Sum(" & CurrentTable.Cols(c).Name & ")")


--  作者:yangming
--  发布时间:2009/4/28 15:15:00
--  
明白了,呵呵,看来还是没搞清楚DataTable和Table 的区别,再次感谢!