Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
之前讲过用Table模仿关联表,但是数据量大的时候,性能很差,不具备实用价值。
现在改用DataList来模拟,需要6月17日更新。 下载信息 [文件大小: 下载次数: ] 点击浏览该文件:关联的替代.table
我们知道为了提高性能,应该适当控制关联的数量,但是关联表确实给我们带来了很大的便利。
可否鱼和熊掌兼得,既可以得到关联表的好处,又不影响性能呢?可以的,这就是本节要介绍的内容。
可以的,首先请打开示例文件。
在这个文件中,产品表和订单表没有建立关联,但是我们希望能够象已经建立关联一样,在产品表选择一个产品的时候,自动显式该产品的所有订单。
设计步骤:
1、新建一个窗口,窗口类型为停靠,停靠位置为底端。
2、插入一个DataList控件,绑定到订单表,将其停靠属性设为Fill。
3、将DataList的CurrentChanged事件设为:
Dim
这样我们在DataList控件中选择一行的时候,Tables("订单")也自动定位到此行,为我们在产品表调用订单表的窗口做准备。
4、窗口的AfterLoad事件设为:
Dim
5、关闭窗口设计器,回到产品表,打开表属性设置窗口,将其CurrentChanged事件设为:
If
现在我们打开窗口1,可以看到在产品表选择一个产品,窗口1中的DataList控件能够自动列出该产品的订单。
DataList没有编辑功能,不过可以直接调用订单表的原窗口来输入数据,你可以在窗口1的DataList控件选择一个订单,然后单击按钮“编辑订单”,即可打开订单表的“编辑订单”窗口修改此选定的订单。之所以能够调用订单表的窗口来编辑DataList中选定的订单,是因为在步骤3中设置的代码,使得在DataList控件中选择一行的时候,Tables("订单")也自动定位到此行。
当然,我们并非一定要调用订单表的窗口来编辑订单,我们完全可以将订单编辑窗口设计在产品表中。
6、到目前为止,还有一个不足,DataList不能直接增加行,所以需要提供一个“增加订单”的按钮,其代码设为:
Dim
我们没有必要对关联过于敏感,大多数时候,关联对于性能的影响是可以忽略的,即使有一些影响,也不至于影响我们的日常工作。
所以我们在设计一套系统的时候,首先应该按照常规的方法设计系统,该建立的关联还是应该建立的,而不是考虑上面介绍的这种极端的方法。
呵呵
之前讲过用Table模仿关联表,但是数据量大的时候,性能很差,不具备实用价值。
现在改用DataList来模拟,需要6月17日更新。
对于sql server我怎么不觉得,用Table模仿关联表模拟有什么不好之处,可以肯定的是在数据录入修改时,表现优秀。
发挥出Table在数据操控的优秀性能。
还没试过数据查询时的性能,所以不随便批评DataList。
不过,不可以随便否定一个控件的,在特定的环境下,使用相适应的控件,就会取得好的成果。