以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么才能汇总选定数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=24980)

--  作者:jinzhengbe
--  发布时间:2012/10/28 18:15:00
--  怎么才能汇总选定数据

如图

发货单 表中的 【已结算】列 = 下面 子表中  所有满足 【结算】列=ture 条件 的【小计】列的总和。

 

这个用表达公式 可以实现么?

或者用代码应该怎么写?

请各位前辈指点。 


图片点击可在新窗口打开查看此主题相关图片如下:??.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-10-28 18:16:09编辑过]

--  作者:布莱克朱
--  发布时间:2012/10/28 18:26:00
--  
必须用代码.
--  作者:y2287958
--  发布时间:2012/10/28 20:56:00
--  
不一定非得用代码的
用表达式也可以
请看说明书的现成例子

--  作者:czy
--  发布时间:2012/10/28 20:58:00
--  

公斤数录入dls表,DataColChanged事件代码

 

If e.DataCol.name = "结算"
    Dim dr As DataRow = e.DataRow.GetParentrow("发货单")
    dr("已结算") = e.DataTable.Compute("sum(小计)","结算 = true")
End If


--  作者:jinzhengbe
--  发布时间:2012/10/28 22:42:00
--  

图片点击可在新窗口打开查看非常感谢

 但是有个问题, 发货单表里的数据比实际数据要多出很多。是什么原因?

 

 感觉是在累计子表里的所有数据,而不是 关联行的数据。改怎么改呢?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

 

 

代码如下

 

公斤数录入dls表,DataColChanged事件代码

If e.DataCol.name = "结算"
Dim dr As DataRow = e.DataRow.GetParentrow("发货单")
dr("已结算") = e.DataTable.Compute("sum(小计)","结算 = true")
End If

 

这个代码是统计关联表里的所有数据, 而不是相关行的数据。有没有办法只统计相关行的数据呢?

[此贴子已经被作者于2012-10-30 5:46:09编辑过]

--  作者:lin_hailun
--  发布时间:2012/10/28 23:39:00
--  
 改成这样,加一个条件。

If e.DataCol.name = "结算"
    Dim dr As DataRow = e.DataRow.GetParentrow("发货单")
    dr("已结算") = e.DataTable.Compute("sum(小计)","结算 = true And 发货单号 = \'" & e.DataRow("发货单号") & "\'")
End If