以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  6.27更新中的多表连接问题(已解决,原来增加了一个连接类型参数)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=10858)

--  作者:reachtone
--  发布时间:2011/6/27 18:16:00
--  6.27更新中的多表连接问题(已解决,原来增加了一个连接类型参数)

用自带的“组合统计结果”为例,执行代码:

 

Dim b As New SQLGroupTableBuilder("统计表1","进货单")
b.AddTable("进货单","型号","销售单","型号")
b.Groups.AddDef("{进货单}.型号")
b.Totals.AddExp("金额","{进货单}.数量*{销售单}.售价")
b.Totals.AddDef("{进货单}.数量")
Tables("窗口1_Table1").DataSource  = b.BuildDataSource

 

之前反映的问题依旧:

1、以“进货单”为基表,添加“销售单”参与统计。既然是按“进货单”的“型号”列进行分组,那么“进货单”中的所有型号都应出现在统计结果中。事实是,在“销售单”中没有关联记录的“NB-XXX”仍然消失。这肯定是不对的。

同理,如果是按“销售单”中的型号分组,则销售单中的所有型号都应出现在统计结果中。这就类似于sql的左连接或右连接。

2、统计列有两个,一个是Exp,一个是Def,统计的结果中,按列名统计的结果仍然排在表达式列的前面。

 

以上问题在上次更新时就提出来了,莫非是忘记修改了?图片点击可在新窗口打开查看

[此贴子已经被作者于2011-6-27 23:24:07编辑过]

--  作者:reachtone
--  发布时间:2011/6/27 18:21:00
--  

一楼的测试代码暂不考虑一对多还是多对多的问题,因为它的统计结果是不正确的。

用这个主要是便于说明问题。

比如,NB-XXX这个型号尽管在销售单中没有对应的记录,但它也应该出现在统计结果中,金额为0


--  作者:mr725
--  发布时间:2011/6/27 19:42:00
--  

撤了···  从帮助中的SQLGroupTableBuilder看,好像就是要这样的吧。即:除了用来关联的列,其他列名在各表之间是不能重名的。否则用GroupTableBuilder+Combine来处理。

[此贴子已经被作者于2011-6-27 21:05:05编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/6/27 20:36:00
--  

1、参考:

http://help.foxtable.com/topics/2330.htm

 

2、顺序问题没有办法,统计接触后,用move方法调整个别列的位置吧


--  作者:reachtone
--  发布时间:2011/6/27 23:22:00
--  

这次增加的连接类型参数很好使,本以为只对sqljointablebuild有效呢。呵呵

ok,问题解决!