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


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

主题:跨表统计问题

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
跨表统计问题  发帖心情 Post By:2017/7/12 17:33:00 [只看该作者]

老师,请问下,当表A的A列B列C列和表B的A列B列C列都相同时,表B的D列总和会统计到表A的D列,相当与跨表统计吧,但前提时A列B列C列都相同的前提下,这代码要怎么写,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
jick0526
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2017/7/12 17:35:00 [只看该作者]

老师,补充下,我想要达到即时更新的效果,不需要重置列就可以即时更新

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18064 威望: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jick0526
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2017/7/12 18:27:00 [只看该作者]

AID什么意思

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 


 回到顶部