以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用DataList模仿关联表(高性能版本) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3180) |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/6/17 11:48:00 -- 用DataList模仿关联表(高性能版本) 之前讲过用Table模仿关联表,但是数据量大的时候,性能很差,不具备实用价值。
2、插入一个DataList控件,绑定到订单表,将其停靠属性设为Fill。 3、将DataList的CurrentChanged事件设为:
If dst.Current IsNot Nothing Then Dim Index As Integer = Tables("订单").FindRow(dst.Current) If Index >=0 Then Tables("订单").Position = Index End If End If
With Tables("产品") If .Current Is Nothing Then dst.RowFilter = "False" Else dst.RowFilter = "产品编号 = " & .Current("产品编号") End IF End With
Dim dst As WinForm.DataList = Forms("窗口1").Controls("DataList1") With CurrentTable If .Current Is Nothing Then dst.RowFilter = "False" Else dst.RowFilter = "产品编号 = " & .Current("产品编号") End IF End With End If
DataList没有编辑功能,不过可以直接调用订单表的原窗口来输入数据,你可以在窗口1的DataList控件选择一个订单,然后单击按钮“编辑订单”,即可打开订单表的“编辑订单”窗口修改此选定的订单。之所以能够调用订单表的窗口来编辑DataList中选定的订单,是因为在步骤3中设置的代码,使得在DataList控件中选择一行的时候,Tables("订单")也自动定位到此行。
dr("产品编号") = Tables("产品").Current("产品编号") If Forms("窗口1").Opened Then \'在DataList控件中选定新增的行 Forms("窗口1").Controls("DataList1").Current = dr End If 我们没有必要对关联过于敏感,大多数时候,关联对于性能的影响是可以忽略的,即使有一些影响,也不至于影响我们的日常工作。 [此贴子已经被作者于2009-6-17 12:42:11编辑过]
|
||||
-- 作者:yangming -- 发布时间:2009/6/17 12:00:00 -- 沙发,躺下来,慢慢看 |
||||
-- 作者:八婺 -- 发布时间:2009/6/17 12:07:00 -- 变态的用法,偶不喜欢。 |
||||
-- 作者:菜鸟foxtable -- 发布时间:2009/6/17 12:38:00 -- 学习下下。 |
||||
-- 作者:卟离卟弃 -- 发布时间:2009/6/17 13:47:00 -- 如果建立关联,新增定单按钮公式应该怎么改,直接在指定关联表增加一行, 关联表的数量一般在多少个时,为最佳? [此贴子已经被作者于2009-6-17 13:56:49编辑过]
|
||||
-- 作者:yangming -- 发布时间:2009/6/17 13:51:00 -- 以下是引用八婺在2009-6-17 12:07:00的发言:
变态的用法,偶不喜欢。 呵呵 |
||||
-- 作者:kylin -- 发布时间:2009/6/17 18:59:00 -- 以下是引用狐狸爸爸在2009-6-17 11:48:00的发言:
之前讲过用Table模仿关联表,但是数据量大的时候,性能很差,不具备实用价值。 [此贴子已经被作者于2009-6-17 12:42:11编辑过] 对于sql server我怎么不觉得,用Table模仿关联表模拟有什么不好之处,可以肯定的是在数据录入修改时,表现优秀。 |
||||
-- 作者:易狐 -- 发布时间:2009/6/17 19:18:00 -- 为了这个效率问题,老六快要走火入魔了! |