以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]统计关联数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1885)

--  作者:狐哥
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:狐哥
--  发布时间:2009/2/21 14:33:00
--  
你好,狐爸,我是通过行号关联的,只是没写出来而已。
我做的公式也是你这个公式,只是太长。

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

--  作者:狐狸爸爸
--  发布时间:2009/2/21 14:54:00
--  

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


--  作者:狐哥
--  发布时间: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)



--  作者:狐狸爸爸
--  发布时间:2009/2/21 15:44:00
--  

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


--  作者:czy
--  发布时间: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)



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


--  作者:狐哥
--  发布时间:2009/2/23 10:21:00
--  

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

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

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


--  作者:狐狸爸爸
--  发布时间:2009/2/23 10:41:00
--  
原来的代码虽然结果正确,但是效率太低,计算代码会重复执行,改正这样才好:

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


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

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

非常感谢!