以文本方式查看主题 - 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=23101) |
||||||||||||||||||||||||||||||||||||
-- 作者:phrgg -- 发布时间:2012/9/2 12:46:00 -- [原创]三个表之间多对多关联,请教思路。 有五个表A/B/C/D/E,其中A,C,E表是数据表,B,D表是AC,CD表间ID对应关系表。想实现点表A的行切换的时候,表A与表C,表C与表E的关联都自动全部显示。 例子:{表A}[ID]=(1,2,3) :{表C}[ID]=(1,2,3) :{表E}[ID]=(1,2,3) :{表B}[表AID]=(1,1,3) [表CID]=(1,2,3) :{表D}[表CID]=(1,2,3) [表EID]=(1,2,3) 其中 :{表B}[表AID]-关联-{表A}[ID] ,{表B}[表CID]-关联-{表C}[ID] :{表D}[表CID]-关联-{表C}[ID] ,{表B}[表EID]-关联-{表E}[ID]
我的目标是,我点表A的行切换,表C与表A的关联都显示,表E与表C的关联都显示。 表C与表A的关联后的表上,我进行行切换,表E与表C的关联就都显示。
尝试用模拟关联表做,但只能做表A与表C的多对多关联,不能做到表C与表E的多对多关联。 望赐教,谢谢。
附件中是截图说明和项目文件
[此贴子已经被作者于2012-9-2 18:55:51编辑过]
|
||||||||||||||||||||||||||||||||||||
-- 作者:jspta -- 发布时间:2012/9/2 13:18:00 -- 请上传个附件,供测试 |
||||||||||||||||||||||||||||||||||||
-- 作者:狐狸爸爸 -- 发布时间:2012/9/3 8:24:00 -- 我很难理解你的问题。 关联是有固定套路的,是不能改的,如果有特殊需求,可以模拟关联表: http://www.foxtable.com/help/topics/2222.htm
|
||||||||||||||||||||||||||||||||||||
-- 作者:jspta -- 发布时间:2012/9/3 9:41:00 -- 以下是引用phrgg在2012-9-2 12:46:00的发言:
有五个表A/B/C/D/E,其中A,C,E表是数据表,B,D表是AC,CD表间ID对应关系表。想实现点表A的行切换的时候,表A与表C,表C与表E的关联都自动全部显示。 例子:{表A}[ID]=(1,2,3) :{表C}[ID]=(1,2,3) :{表E}[ID]=(1,2,3) :{表B}[表AID]=(1,1,3) [表CID]=(1,2,3) :{表D}[表CID]=(1,2,3) [表EID]=(1,2,3) 其中 :{表B}[表AID]-关联-{表A}[ID] ,{表B}[表CID]-关联-{表C}[ID] :{表D}[表CID]-关联-{表C}[ID] ,{表B}[表EID]-关联-{表E}[ID]
我的目标是,我点表A的行切换,表C与表A的关联都显示,表E与表C的关联都显示。 表C与表A的关联后的表上,我进行行切换,表E与表C的关联就都显示。
尝试用模拟关联表做,但只能做表A与表C的多对多关联,不能做到表C与表E的多对多关联。 望赐教,谢谢。
附件中是截图说明和项目文件
[此贴子已经被作者于2012-9-2 18:55:51编辑过] 根据图示,这是不可能的,关联表只能显示关联项,相当于筛选了符合项了。如果要达到你得要求,你为什么要用表B来进行过渡那?直接吧关联号连接到表C,即可达到你得要求。 |
||||||||||||||||||||||||||||||||||||
-- 作者:phrgg -- 发布时间:2012/9/3 14:39:00 -- 中间增加一个过渡表是方便多人进行添加表A和表C之间的关联的。
表A和表C是多对多关联的,表A和表C可以做一个模拟关联表来解决,但是表C和表E之间的多对多关联怎么解决?我是想要在表A进行行切换的时候,两个模拟关联表都能同步更新。
附件是不能实现我的要求,所以希望给提供思路。 |
||||||||||||||||||||||||||||||||||||
-- 作者:phrgg -- 发布时间:2012/9/3 15:23:00 -- 我有三个表, 在订单表的:“simens 模件 ”“SIMENS 电路板” 在库存表中的“西门子模件” “德国 西门子 板子” 在使用表中的“南京西门子模件” “德国 西门子 板子” 这些说的都是一个东西,我想点订单表里头“simens 模件”或“SIMENS 电路板”,就能显示出库存表中的“西门子模件” “德国 西门子 板子”,然后统计一下库存数量。 直接建立关联是无法建立的,所以要增加一个过渡表。 当我点库存表的时候,就会把使用表里这种模件都列出来,这样我就知道这种模件被用了多少了。 不要让我把三个表的产品型号改成一致再关联,因为每个表都有上千行,而且没有一个人对所有的产品都清楚。
订单表
库存表
使用表
这样不知是否清楚。 |
||||||||||||||||||||||||||||||||||||
-- 作者:jspta -- 发布时间:2012/9/3 16:06:00 -- 不要让我把三个表的产品型号改成一致再关联,因为每个表都有上千行,而且没有一个人对所有的产品都清楚。
个人建议, 你必须开始限定用户录入名称,即增加下拉列表让用户选择,而不是录入,如果名称可能不断增长,你可以考虑增加一个表让专人来填写新增产品。 全部统一名称,真的必须做,现在多花点时间整理,否则以后维护起来会非常困难。
问个问题,中间过渡表谁来填?用户吗?如果是用户,难道不会有填错的可能吗?都是键,没有实际名称,以后查找错误的难度肯定非常大。 |
||||||||||||||||||||||||||||||||||||
-- 作者:phrgg -- 发布时间:2012/9/3 18:48:00 -- 大哥,首先这几个表是已经存在的表,而且不止这么几个表。客户是不可能让你把表改得面目全非的。 第二,如果能做多个表进行多对多关联,对客户来说操作界面是很友好的。毕竟,技术是为人服务的嘛。
当然,你说的在实际应用中也是很对的。如果从纯技术上,想实现有什么好方法吗 [此贴子已经被作者于2012-9-3 19:18:53编辑过]
|
||||||||||||||||||||||||||||||||||||
-- 作者:jspta -- 发布时间:2012/9/3 20:14:00 -- 以下是引用phrgg在2012-9-3 18:48:00的发言:
大哥,首先这几个表是已经存在的表,而且不止这么几个表。客户是不可能让你把表改得面目全非的。 第二,如果能做多个表进行多对多关联,对客户来说操作界面是很友好的。毕竟,技术是为人服务的嘛。
当然,你说的在实际应用中也是很对的。如果从纯技术上,想实现有什么好方法吗 [此贴子已经被作者于2012-9-3 19:18:53编辑过] 首先,你现在借助foxtable来重新设计,只需要考虑到不改变客户习惯,界面友好,而后台表不是客户考虑的吧?既然这个,你按照客户这个错误表继续走下去,以后系统可能出问题。出了问题肯定找你,到时候你有的头疼。 我给个小思路,希望有其他高手帮你想想方法。 你首先应该建立,名称对应表(你可以设计进系统,也可以只是作为对照表),设计至少以下2列,编号,对应名称 即
“simens 模件 ”“SIMENS 电路板” “西门子模件” “德国 西门子 板子” “南京西门子模件” “德国 西门子 板子” 都属于类A, 那么你就在表前六行填 A simens 模件 。依次类推。 然后,在表A和表C增加一列,用于录入编号,用编号列作为键进行设计,效果和原理和我上面说的一样。这样你就不用管用户如何录入什么名称,只要这个键填对就可以了。 |
||||||||||||||||||||||||||||||||||||
-- 作者:jspta -- 发布时间:2012/9/3 20:40:00 -- 应该勉强能够满足你现在的要求,不需要三表有关联 在currentChanged表事件加入以下代码 If e.Table.Current Is Nothing Then [此贴子已经被作者于2012-9-3 20:45:51编辑过]
|