以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关联表的显示问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=63382)

--  作者:askbang
--  发布时间:2015/1/20 0:28:00
--  关联表的显示问题
主界面中已经正常加载主表子表,并建立了关联关系,但是如下代码执行后,窗口中的Table2显示的是子表所有数据,而非主表当前行所关联的子表数据,望指教!
Tables("窗口1_Table2").DataSource = Relations("主表_子表").ChildTable
--  作者:Bin
--  发布时间:2015/1/20 8:10:00
--  
你这个代码,是获取子表 而不是关联表.

而且窗口表只能在设置中绑定关联表.
你可以考虑用模拟关联 http://www.foxtable.com/help/topics/2222.htm

--  作者:askbang
--  发布时间:2015/1/20 12:44:00
--  
1、我的目的就是获取子表数据,只是希望子表的数据是主表选定编号pid所对应的行才显示,而不是所有行。
Relations.Add("主表_子表", DataTables("主表").DataCols("pid"), DataTables("子表").DataCols("pid"))

2、另外,手册中关于程序创建关联关系,参数RelationPath一直没明白具体怎么引用枚举值,望指教
Add(RelationName, ParentCol, ChildCol, RelationPath) 

RelationName:    关联名称
ParentCol:       父表关联列
ChildCol:        子表关联列
Visible:         可选参数,是否显示关联表  
RelationPath:    RelationPathEnum型枚举,用于设置关联表生成模式,有三个可选值,分别是:One(单向生成),Both(双向生成),None(不生成)

3、还有关联表设计阶段可以在生成模式选择为“无”,可是在代码中如何体现呢?

--  作者:Bin
--  发布时间:2015/1/20 14:03:00
--  
1.看2楼

2.

RelationPathEnum.
One
RelationPathEnum.Both
RelationPathEnum.None


3. 用RelationPathEnum.None

--  作者:askbang
--  发布时间:2015/1/20 15:30:00
--  
谢谢你的答复,对于问题1感觉模拟关联还不是不够高效,我有三个表,都创建了关联(代码创建的关联关系,只是没有带上Relation参数,默认不知是哪个模式)表A汇总统计表B中的金额,表B汇总统计表C中的金额,反过来表B可获取表A给予的配额信息,表C同理。用模拟关联我已实现,但是还是更加希望采用建表(从SQL数据库根据业务自动判断加载外部表)之初就动态创建关联,虽然实践证明这样效率低些,可总体代码量较少,且代码可维护性较强,这点比较佩服狐表的关联机制。但是就是不明白为何此种关联,为何不能让子表(表B)根据主表(表A)自动筛选数据结果集并显示,非要我去用模拟关联吗?
--  作者:有点甜
--  发布时间:2015/1/20 15:35:00
--  

 窗口表,不能用代码绑定关联表。

 

 窗口表只能通过设置的方式加入关联表;其余情况,都必须用模拟关联。