以文本方式查看主题

-  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=8857)

--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:老有所乐
--  发布时间:2010/12/16 17:23:00
--  
贺总辛苦,学习
--  作者:程兴刚
--  发布时间:2010/12/16 17:36:00
--  
收到!
--  作者:mr725
--  发布时间:2010/12/16 20:28:00
--  
不错,用时再来查看···
--  作者:xysheng
--  发布时间:2010/12/16 20:50:00
--  

收藏了,多谢!

 


--  作者:kylin
--  发布时间:2010/12/16 21:41:00
--  

不错,还是劳驾老六能将其并入帮助里头,呵呵!

[此贴子已经被作者于2010-12-16 21:41:08编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/12/16 21:56:00
--  
呵呵,已经加进去啦
--  作者:bohe
--  发布时间:2010/12/16 22:57:00
--  
学习,学习,还是学习
--  作者:blackzhu
--  发布时间:2010/12/17 7:43:00
--  
不错,这东西是有的学.
--  作者:pyh6918
--  发布时间:2010/12/17 7:55:00
--  
收藏