Foxtable(狐表)用户栏目专家坐堂 → 关于动态添加关联的问题


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

主题:关于动态添加关联的问题

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/29 23:02:00 [显示全部帖子]

呵呵,你还是要确认到底是不是关联的原因吧。

 

如果是的:

 

1、正常建立关联,设计表的时候,将Table绑定到关联表。

2、删除关联,需要的时候,先创建关联:

 

Relations.Add("A",DataTables("办公用品领用单").DataCols("系统单号"),DataTables("办公用品领用单明细").DataCols("系统单号"))
Forms("XXX").Open()

 

这样窗口打开的时候,关联表已经存在,就自动绑定了。

 

3、至于同步锁定,同步更新,同步删除,这些不需要关联一样可以做到。

例如在没有建立关联的时候要同步删除,只需将父表的BeforeDeleteDataRow事件代码设置为:

Datatables("子表名称").DeleteFor("子表关联列 = '" & e.DataRow("父表关联列") & "'")

 

一行代码就实现了同步关联删除的功能。同步锁定和同步更新也一样简单。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/29 23:49:00 [显示全部帖子]

实际上窗口设计也一样,我可以加载表B,在表A设计表B的窗口,绑定到表B各列,然后删除表B.

需要使用表B的时候,再动态加载表B,打开之前在表A中设计的表B的窗口即可。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/30 8:26:00 [显示全部帖子]

既然窗口中的Table绑定到了这个关联表,那么肯定要在打开窗口前建立关联,具体在哪里,取决于设计需求。

 

对于一个超大型的系统,一般是两个思路:

 

1、分成不同的项目,例如销售、生产、财务、人士、仓管,共享一个数据库,各项目只加载自己的表,但是菜单中会有切换到其他项目的按钮,这是常规的设计方式,难度低。

2、如果要整合成一个项目,可以做一两个内部表,所有窗口都可以设计在内部表中,真实数据全部采用外部表,外部表本身、关联、表达式列都可以在运行过程中动态生成,这是非常规的设计,对于开发者要求高。

 

Foxtable是灵活的,不单单是窗口中的Table控件可以动态生成,可以根据需要随意加载不同表的数据,主表一样可以随意生成或卸载,随意加载不同表的数据,甚至数据源都可以动态切换。
单单一个动态加载不同表数据,Foxtable就提供了很多方法:

 

http://www.foxtable.com/help/topics/1929.htm

http://www.foxtable.com/help/topics/1930.htm

http://www.foxtable.com/help/topics/1279.htm

http://www.foxtable.com/help/topics/2335.htm

http://www.foxtable.com/help/topics/2335.htm

http://www.foxtable.com/help/topics/0695.htm

http://www.foxtable.com/help/topics/1907.htm

http://www.foxtable.com/help/topics/1919.htm

 

目前看来:

1、为了方便所有窗口集中在一个内部表设计,以前否决的窗口管理器加上分类的建议应该采纳。

2、应该加一个可以动态绑定到关联表的方法。

 


 回到顶部