Foxtable(狐表)用户栏目专家坐堂 → 关联与动态加载(必看)


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

主题:关联与动态加载(必看)

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
关联与动态加载(必看)  发帖心情 Post By:2010/12/16 17:14:00 [显示全部帖子]

关联与动态加载

 

假定有两个表,分别是订单和订单明细,两者通过"订单ID"列关联起来,订单是父表,订单明细是子表,因为每个订单对应有若干订单明细。
如果订单表采用加载树加载,按年月每页加载10个订单,显然一个合格的系统,应该同时加载这10个订单的订单明细。
要完成这样的任务,其实非常简单。

 

设计步骤:

 

1、首先将BeforeLoadInnerTable事件代码设置为:

 

Select Case e.DataTableName
   
Case "订单","订单明细"
        e.Filter =
"[_Identify] Is Null"
End
Select

 

确保订单表和订单明细表在初始状态不会加载任何数据。

 

2、然后在AfterOpenProject事件中加入代码:

 

Tables("订单").OpenLoadTree("订购日期 YM",120,10)

 

这样项目打开后,将自动显示订单表的加载树。

 

3、将订单表的AfterLoad事件设置为:

 

Dim ids As String
For
Each dr As DataRow In DataTables("订单").DataRows
    ids = ids &
"," & dr("订单ID")
Next

ids= ids.Trim(
",")
DataTables
("订单明细").LoadFilter = "订单id In (" & ids & ")"
DataTables
("订单明细").Load()

 

至此,我们这个关联加载系统已经完工,前后不过12行代码。

 

提示:

1、上面的例子是针对内部数据表的,如果使用的是外部数据源,那么第一步可以省略,只需在设置外部数据表的时候,将加载条件设置为“[_Identify] Is Null”。

 

 

示例文件:

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目43.rar

[此贴子已经被作者于2010-12-16 23:24:55编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/16 21:56:00 [显示全部帖子]

呵呵,已经加进去啦

 回到顶部