Foxtable(狐表)用户栏目专家坐堂 → 求教,重新加载数据相关问题


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

主题:求教,重新加载数据相关问题

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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
求教,重新加载数据相关问题  发帖心情 Post By:2012/6/11 10:20:00 [只看该作者]

AfterLoad

如果还没有接触动态数据加载,可以暂时忽略本事件。

在重新加载数据后执行。
不管是通过加载树加载数据,还是自己编写代码执行Load方法加载数据,都会执行此事件。

e参数属性:

DataTable:触发事件的DataTable

示例一

假定有两个表,分别是订单和订单明细,两者通过"订单ID"列关联起来,订单是父表,订单明细是子表,因为每个订单对应有若干订单明细。
由于数据量比较大,决定采用动态加载,每次只加载一定数量的订单进行处理,显然作为一个合格的系统,应该同时加载这些订单的订单明细。

要完成这样的任务很简单,只需在订单表的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()

上述代码会自动扫描已加载订单的订单ID,并合成订单明细表的加载条件,最后重新加载订单明细表。
假定订单表加载了6个订单,其订单ID分别为1、2、6、7、8、9,显然上述代码为订单明细表合成的加载条件为:订单ID In (1,2,6,7,8,9),这样重新加载订单明细表时,将只加载这6个订单的订单明细。

可见代码的关键在于In运算符,在学习SQL语句的时候,我们会介绍此运算符。

但是SQL Table 通过Fill 来加载数据时存在不触发此事件。

Dim Total As Long
    Total = e.DataTable.Compute("Count( 托运单号)", "预约状态 = '未预约'") 
    StatusBar.Message2 = "未预约总piao数:" & Total

请老大指点!


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/11 12:08:00 [只看该作者]

DataTables("xxx").Fill("....")

你原来的代码复制一份在这里...


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2012/6/11 13:13:00 [只看该作者]

Dim ss As String = "select * from {托运单据} where 销单否 = '否' and 单据性质 = '正常单' and ((单据状态 = '开单入库' or 单据状态 = '待出库' or 单据状态 = '已发货' or 单据状态 = '已送达') and 预约状态 = '未预约')"
Tables("S预约管理_Table1").Fill(ss,"baox",False)
重新加载数据时,表S预约管理_Table1 

AfterLoad

事件不触发,估计也是一个Bug.老大看看。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/11 15:15:00 [只看该作者]

fill不触发afterload事件的。

将代码复制一份到fill之后。


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2012/6/14 13:33:00 [只看该作者]

以下是引用狐狸爸爸在2012-6-11 15:15:00的发言:

fill不触发afterload事件的。

将代码复制一份到fill之后。

未来可否实现Fill加载数据也触发afterload事件呢?


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/14 14:25:00 [只看该作者]

不会的


 回到顶部