以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  【已解决】条件求和?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=23305)

--  作者:Fotable
--  发布时间:2012/9/8 11:32:00
--  【已解决】条件求和?

在易表中用sumfor函数可以很方便 实现条件求和。在狐表中的表达式列里面,应该用什么函数来实现相应功能呢。

Sumfor

对指定表的指定列进行求和,可以设置多个条件。

语法:
Sumfor(Grid,Col,CompareCol,CompareMode,CompareValue......,StartRow,EndRow,Option)

Grid         对该表中的某一列进行求和,可以用表名表示,也可以用位置表示。
Col          对该列进行求和,可以用列名称表示,也可以用位置表示。
CompareCol   进行比较的列,可以用列名称表示,也可以用位置表示。
CompareMode  比较方式,包括=、>、<、>=、<=、<>、Like、Instr共8种比较方式。
CompareValue 比较值
StartRow     可选参数,指定开始计算的行。
EndRow       可选参数,指定结束计算的行。
Option       可选参数,如果设为1,则不统计隐藏行

可以设置多个比较条件,也可以不设置,从第三个参数开始,每三个参数组成一个比较条件。如果比较方式选择的是Instr,则进行包含查询;如果比较方式选择"Like",则可以在比较值中使用通配符进行类似查询。
注意StartRow和EndRow如果省略或全部设为0,表示包括所有行。

例子:
Sumfor("订单","数量","客户","=","CS01")
统计订单表中CS01客户订购产品的数量。

Sumfor("订单","数量","客户","=","CS01","产品","=","PD01")
统计订单表中CS01客户订购产品PD01的数量

[此贴子已经被作者于2012-9-9 9:30:12编辑过]

--  作者:ahbzczy
--  发布时间:2012/9/8 11:56:00
--  
comput函数
--  作者:Fotable
--  发布时间:2012/9/8 13:20:00
--  
以下是引用muhua在2012-9-8 11:47:00的发言:
你是想增加列还是想实现什么效果???

比如我想统计订单表中,2012年1月1日以后 产品= pd01 的产品的销售数量  。这就是条件求和呀。

 

在表达式列 设置表达式 sum([数量])这就是无条件求和。而我这个求和 是有条件的,所以叫 有条件求和。

 

楼上说的用compute函数确实可以办到,但无法再 表达式列中使用,只能在事件中使用

 

[此贴子已经被作者于2012-9-8 13:22:46编辑过]

--  作者:lin_hailun
--  发布时间:2012/9/8 14:16:00
--  
表达式在狐表不是这样用的。

表达式,针对的是当行,父表,子表。

--  作者:狐狸爸爸
--  发布时间:2012/9/8 14:19:00
--  

foxtable更方便的,看看《开发指南》下《统计与查询》这一章。

一般不需要这样编码写,你喜欢的话也可以,类似的:

http://www.foxtable.com/help/topics/0681.htm

 


--  作者:Fotable
--  发布时间:2012/9/8 23:27:00
--  

谢谢 两位元老,果然是用compute 代替了 易表的 sumfor