Office中国论坛/Access中国论坛
标题:
各位版主,ADP与SQL连接如何提高速度,谢谢!!
[打印本页]
作者:
xsxkw
时间:
2004-7-20 00:57
标题:
各位版主,ADP与SQL连接如何提高速度,谢谢!!
本人目前正在为公司开发仓库管理程序,采用ADP与SQL结构。在本地局域网中程序运行正常,且速度较快。目前公司涉及外地仓库,为此远端ADP通过外地宽带与公司SQL连接,程序能运行,但程序每打开或关闭一个窗体时,都需大约2分钟才能完成,其速度实在无法接受(其实数据量很小),但打开后数据录入速度又可以。请各位版主、高手给予指教,小弟先谢了!!![em06]
作者:
阿罗
时间:
2004-7-20 08:09
本来就想在这方面写一些东西,不过最近家事缠身。如果有可能,请楼主先发个例子上来,具体要求是,窗体图片,以及该窗体(包括子窗体)的所有VBA代码。我可以先帮你分析一下。
作者:
阿罗
时间:
2004-7-20 09:01
当然,主窗体和子窗体们的数据源也写一下。
作者:
yodong
时间:
2004-7-20 21:29
xsxkw朋友,快点行动.我们可是很想知道的哦.
作者:
KenjiSato
时间:
2004-7-21 01:51
窗体数据源不要绑定.
作者:
阿罗
时间:
2004-7-21 07:26
上面说得很对,基本思路就是这样。不过,仅仅如此便不能最大限度地利用ACCESS的快速设计功能。更好的办法是这样的:设计时利用绑定的数据源,过后也不需要删除,然后再在窗体的load,open或current事件中将窗体的数据源改成T-SQL语句。有时候,即便这样做了,速度提高的程度还是不够要求,这时,应该修改窗体数据源的T-SQL语句,使之在加载或打开的时候只从相关表中取一条记录,而子窗体甚至可以取一个空记录(为什么可以这样?因为,一般工作流程是打开窗体,定位需要的记录,然后再处理,所以,一开始窗体并不需要一个具体的记录,或者说,一开始显示的记录,基本上不会是你立即需要的记录-除非该窗体是一个查询结果显示。这类往返除了浪费带宽和服务器资源,没有值得一提的好处),这样就能使任何复杂的窗体都能飞快地打开。下次如时间允许做例子给大家交流。最后补充一点,下拉列表等如果有大量记录,也需要充分考虑,有时候甚至要修改整个设计思路,或者令ADP前端每次只取少量数据,不过这也许不是最佳解决方法。按我的看法,在一个庞大的下拉列表中选择不会是一个令人愉快的设计。先举个最简单的例子,一个表,例如mytbl,主键是id,自动从整数1开始以1为步长增加,原先窗体的数据源绑定是这样的dbo.mytbl或者SELECT * FROM mytbl,现在,你要这么写绑定的数据源:SELECT * FROM mytbl WHERE id=1,或者甚至SELECT * FROM mytbl WHERE id=0都可以。也许有人会问,然后怎么办?我希望各位看官能够明白,用记录浏览器在成千上万个记录中逐个浏览也不是什么良好的设计,例如一个订单数据库,我更喜欢的办法是让订单窗体在打开时默认显示一段时期(例如最近一年)的订单号码,放到一个listbox中,然后在listbox中选择订单号码,随后listbox_afterupdate中令窗体recordSource="SELECT * FROM tbl_Orders WHERE orderID=" & listbox.value等....希望能有所启发。
作者:
yodong
时间:
2004-7-21 21:21
很好!
作者:
ufo_1945
时间:
2004-8-10 01:36
多謝阿羅兄!
作者:
huanghai
时间:
2004-8-10 03:32
补充阿罗一点,很多有参数返回记录集使用存储过程会更快些.
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3