MS Access中的多线程,异步处理

Ico*_*ood 5 ms-access multithreading vba

我知道这个标题听起来很疯狂,但这是我的情况.

在某个用户事件之后,我需要更新一些与用户当前正在做的"无关"的表.目前,这需要几秒钟的时间来执行并导致用户一定程度的挫败感.有没有办法在第二个进程中执行我的更新,或者在处理时不冻结我的应用程序的UI?

谢谢

Raj*_*ore 3

我将解决问题的核心 - 调整数据更新查询以运行得更快。

话虽如此,MS Access 不支持多线程。

因此,当您对某个过程进行阻塞调用时,MS Access 将冻结屏幕,直到调用返回。

编辑

如果您通过慢速网络连接更新大型表,那么 DAO 并不是您最好的朋友。您可能需要考虑改用 ODBC 连接并运行优化的更新语句。

编辑2

当您使用 ODBC 时,您必须编写 ADO 风格的代码才能完成这项工作。请注意此示例,此代码是 OTTOMH。

dim myConn as ADODB.Connection
dim myCmd as ADODB.Command

set myConn = new ADODB.Connection
myConn.ConnectionString = "Provider=SQLOLEDB;Server=MyServerName;Initial Catalog=MyCatalogName;UID='XXX';PWD='YYY'"
myConn.Open

set myCmd =  new ADODB.Command (myConn)
myCmd.SQL = "Update MyTable Set MyColumn = '" & MyDataVariable & "' Where MyPK = '" & MyPKVariable & "'"
myCmd.Execute

myCmd.close
myConn.close
Run Code Online (Sandbox Code Playgroud)