Foxtable(狐表)用户栏目专家坐堂 → 关于父子表同步加载的问题


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

主题:关于父子表同步加载的问题

帅哥哟,离线,有人找我吗?
诚学思行
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:435 积分:3436 威望:0 精华:0 注册:2017/3/8 0:04:00
关于父子表同步加载的问题  发帖心情 Post By:2019/5/24 15:01:00 [只看该作者]

帮助文件:

父表与子表同步加载之二

上一节介绍的父表与子表同步加载的方法,对于多数用户来说,可能稍微复杂了一点,而且效率相对比较低,帮助之所以保留这种方法,主要还是为了让大家熟悉和演练一下SQL语句。

实际上,Foxtable提供了非常简单高效的同步加载方法,你要做的只需在父表的AfterLoad事件中加上一行代码:

e.DataTable.LoadChildren("子表")

例如订单和订单明细通过订单编号建立关联,订单表动态加载,每次只加载一定数量的订单进行处理,为了每次加载订单后,能同步加载这些订单的订单明细,只需在订单表的AfterLoad事件加上代码:

e.DataTable.LoadChildren("订单明细")

是的,就是这么简单,因为你用的是Foxtable。

LoadChildren是DataTable的一个方法,用于加载子表数据,而且只加载那些父表已经存在对应行的子表数据。

 

 

 

假设我在AfterLoad(全局表事件)中写下以下代码:

Dim glbs As String = ""    '关联表
Dim zbs As String = ""    '关联子表(当前表作为父表)

'同步加载子表关联数据
glbs = Functions.Execute("获取所有已加载的关联表名称",e.DataTable.Name)
zbs = glbs.Split(",")(0)
If zbs > "" Then
    Dim zb() As String = zbs.Split("|")
    For i As Integer = 0 To zb.Length - 1
        e.DataTable.LoadChildren(zb(i))
    Next
End If

就是同步加载所有当前表e.datatable的子表;

 

需要请教的问题:

1、因为父表的AfterLoad事件可以触发加载全部子表的相关数据,那么会自动触发子表的AfterLoad事件,通过上面的代码会自动同步加载孙表数据……?如此循环往复。也就是说,一个业务模块,如果有一个祖宗表(就是只有子表、孙表、……,没有父表),只要处理这一个祖宗表的AfterLoad事件就行了;

2、因为AfterLoad事件可能由于OpenQQ即时同步自动触发,也会把上面的步骤再自动循环一次,是否会造成效率的下降?如何避免?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/24 15:15:00 [只看该作者]


 回到顶部