Foxtable(狐表)用户栏目专家坐堂 → [求助]统计关联数据


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

主题:[求助]统计关联数据

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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
[求助]统计关联数据  发帖心情 Post By:2009/2/21 14:21:00 [只看该作者]

因家网络有问题,在网巴询:

当前表如下三列:
列名:USD    HKD   RMB

关联表有如下三列:
列名:        收付   币制    金额
第一行:     应收  USD    100
第二行:     应付  USD      50
第三行:     应收  RMB    100
第四行:     应付  RMB      50
第五行:     应收  USD     200

因自己搞的代码太长,没有充分利用关联,如何用关联关系在当前表统计关联表的当前列名的利润:

例如:
当前表的三列当前行显示:
USD     HKD    RMB
250                   50

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表统计.table

[此贴子已经被作者于2009-2-23 10:18:26编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/21 14:28:00 [只看该作者]

你这不是关联,你应该重新设计表结构。
如果一定要这么计算,在项目事件MainTableChanged事件中设置:
If MainTable.Name = "表1"
   Dim dt1  As DataTable = DataTables("表1")
   Dim dt2  As DataTable = DataTables("表2").
   dt1.DtaRows(0)("USD") = dt2.Compute("Sum(金额)","币制= 'USD' And 收付 = '应收'") -dt2.Compute("Sum(金额)","币制= 'USD' And 收付 = '应父'")

.....
End If

这样每次选择表1,就可以看到结果。
[此贴子已经被作者于2009-2-21 14:30:53编辑过]

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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/2/21 14:33:00 [只看该作者]

你好,狐爸,我是通过行号关联的,只是没写出来而已。
我做的公式也是你这个公式,只是太长。

当前表是计算当前业务的利润。
关联表是应收应付的费用清明细。
[此贴子已经被作者于2009-2-21 14:33:50编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/21 14:54:00 [只看该作者]

你的设计很奇怪,没有文件,看不明白的。


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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/2/21 15:08:00 [只看该作者]

以下是引用狐狸爸爸在2009-2-21 14:54:00的发言:

你的设计很奇怪,没有文件,看不明白的。

不好意思:

比如:

表A:
行号    USD    HKD    RMB
1         50      130         20        (此为计算结果)

关联表  (表A.表B):
关联列  收付      币制       金额
1         收入      USD      100
1         支出      USD        50
1         收入      RMB      100
1         支出      RMB        80
1         收入      HKD      150
1         支出      HKD        20

呵,不好意思,开始没有注明(表A.表B)



 回到顶部
帅哥,在线噢!
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/21 15:44:00 [只看该作者]

最好设计一个表格上来,输入一点数据,然后我们帮你想想办法。
因为我们也要测试的,要帮你,还得先建立一个项目的。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/2/22 18:05:00 [只看该作者]

以下是引用狐哥在2009-2-21 15:08:00的发言:

不好意思:

比如:

表A:
行号    USD    HKD    RMB
1         50      130         20        (此为计算结果)

关联表  (表A.表B):
关联列  收付      币制       金额
1         收入      USD      100
1         支出      USD        50
1         收入      RMB      100
1         支出      RMB        80
1         收入      HKD      150
1         支出      HKD        20

呵,不好意思,开始没有注明(表A.表B)



这种要求表达式是不能完成的,有关联也不行,因为没有一个聚合函数是可以带比较条件进行计算的,所以你只能用代码。


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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/2/23 10:21:00 [只看该作者]

各位老师:
附件已在一楼.

帮我看一下内的公式,如何设置才是合理.

另询一下中括号的问题:
Compute("Sum(金额)", "[收付] = '应收' AND [币制] = 'USD' and [费用关联] = '" & e.datarow("_Identify") & "'") .....
列名我用[]也能计算正确,不用也能.帮助中有的有[]有的没有,有什么区别吗??


 回到顶部
帅哥,在线噢!
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/23 10:41:00 [只看该作者]

原来的代码虽然结果正确,但是效率太低,计算代码会重复执行,改正这样才好:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表统计.table


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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/2/23 10:44:00 [只看该作者]

以下是引用狐狸爸爸在2009-2-23 10:41:00的发言:
原来的代码虽然结果正确,但是效率太低,计算代码会重复执行,改正这样才好:

 下载信息  [文件大小:448.0 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:跨表统计.table

非常感谢!


 回到顶部
总数 13 1 2 下一页