Foxtable(狐表)用户栏目专家坐堂 → 跨表统计问题


  共有1595人关注过本帖树形打印复制链接

主题:跨表统计问题

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

 回到顶部