的MS Access异步查询
问题描述:
我有一个基本的SELECT
查询从Access形式需要一段时间来执行发射,所以我想以异步方式运行查询,让我的用户继续使用的形式(或至少让他们更新进展情况)。的MS Access异步查询
的问题是,访问冻结被执行的代码,当应用程序,出现在用户已经坠毁 - 即使到Windows的标志是“没有响应”和捧杀的地步。显然不是很用户友好!我尝试使用MSDN here和变体方法here上列出的代码。
这两种方案似乎运行查询“异步”(代码块烧制的异步查询完成,且rs_FetchProgress
和rs_FetchComplete
事件(或在第二溶液cn_ExecuteComplete
事件),火灾和运行......但Access的界面直到查询执行完毕。调用在不同的地方Repaint
和DoEvents
(如rs_FetchProgress
事件),似乎没有任何效果仍然锁定。
我怀疑它的相关信息,但此视图SELECT
编辑从是在SQL Server中,视图不会返回大量的数据,但需要大约20秒的时间来处理。
答
当您打开窗体不要拉一个巨大的记录。将表单建立在一个查询上,当第一次加载时只会拉出几个或甚至没有记录。然后为用户提供一种方法来选择不同的合理大小的记录子集。
尽量避免,无论数据源是否是一个链接Access表或客户机 - 服务器数据库中提取巨大的记录。
您是否尝试过使用'DoEvents' – 2013-04-05 14:16:07
我有一段时间没有使用过Access,但曾经有一个“传递”选项,后端将执行完整查询,包括连接和过滤由where条件。当不使用传递模式时,Access会通过线路从后端带来大量数据,并在客户端执行很多工作,并且这种行为似乎是同步的。 – Tim 2013-04-05 14:18:59
我做过了,用“Repaint”在不同的地方涂上它。似乎没有任何效果。 – Kai 2013-04-05 14:19:02