跨表统计

接下来的几节将讲述如何利用DataColChanged事件来完成数据统计的任务。
实际上关于数据统计,会有专门的一章讲述,而且会更加容易, 现在接触统计的目的,是为了让大家了解DataColChanged事件的更多用法。

假定有一个如下图所示的订单表:

 

 

我们希望新增这么一个表,在该表中输入一个产品名称,能够自动统计出该产品总的订购数量。
首先增加一个表,表的名称为“统计”,该表包括两列,分别是字符型的产品,和整数型的数量:

 

 

然后在该表的DataColChanged事件 中设置如下代码:

If e.DataCol.Name = "产品" Then '发生变化的是产品列。
    '则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列

    e.
DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = '" & e.NewValue & "'")
End
If

上面的代码能够自动统计所输入产品的销售数量。
任何时候,如果希望得到最新的统计结果,只需选择产品列(注意不是数量列),
然后在“日常工作”功能区“数据”功能组,单击下面的“重置列”按钮即可:

如果希望一旦选择该表,就能自动刷新统计结果,而不需要人为选择产品列,然后单击“重置”按钮,可以在项目事件MainTableChanged中加入下面的代码:

If MainTable.Name = "统计" Then
    DataTables(
"统计").DataCols("产品").RaiseDataColChanged()

End
If

能不能自动列出所有的产品,无需用户一个一个去输入呢?当然能够, 可是这不是我们现在要学习的内容,后面会有专门讲述数据统计的章节,到时我们再讲。


本页地址:http://www.foxtable.com/webhelp/topics/1454.htm