以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 跨表统计问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=103621) |
-- 作者:jick0526 -- 发布时间:2017/7/12 17:33:00 -- 跨表统计问题 老师,请问下,当表A的A列B列C列和表B的A列B列C列都相同时,表B的D列总和会统计到表A的D列,相当与跨表统计吧,但前提时A列B列C列都相同的前提下,这代码要怎么写,谢谢! |
-- 作者:jick0526 -- 发布时间:2017/7/12 17:35:00 -- 老师,补充下,我想要达到即时更新的效果,不需要重置列就可以即时更新 |
-- 作者:chnfo -- 发布时间:2017/7/12 17:41:00 -- 比较简单的方法是在A和B表中都加一个辅助表达式列,Temp=isnull(A,\'\') + \' \' + isnull(B,\'\') + \' \' + isnull(C,\'\') 表A的datacolchanged事件 select case e.datacol.name case "A" datarow("D") = datatables("B").compute("Sum(D)","Temp = \'" & e.datarow("Temp") & "\'") end select 表B的datacolchanged事件 select case e.datacol.name case "A" dim pr as datarow = datatables("A").find("Temp = \'" & e.datarow("TEMP") & "\'") if pr isnot nothing then datatables("A").datacols("A").RaiseDataColChanged(pr) end if end select 如果你用 datarow("D") = datatables("B").compute("Sum(D)","A = \'" & e.datarow("A") & "\' and B =\'" & e.datarow("B") & "\' and C = \'" & e.datarow("C") & "\'") 的话,如果表B的A或B或C列的值量很大的话(比如一次复制10000行进去),估计就要等好久。 其实,你这样设计是有问题的。应当表B中有一列AID,将它与A表中的ID关联起来,然后表B中增加表达式列A、B、C。 然后表A的D列用表达式sum(child.D)
[此贴子已经被作者于2017/7/12 17:47:07编辑过]
|
-- 作者:jick0526 -- 发布时间:2017/7/12 18:27:00 -- AID什么意思 |
-- 作者:有点甜 -- 发布时间:2017/7/12 20:57:00 -- 以下是引用jick0526在2017/7/12 18:27:00的发言:
AID什么意思
你提问的都是最基础的问题。请把视频教程先看一遍。
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187
|